2007/12/06 14:39

관리자 권한으로 코드 실행하기

WSS상에서 프로그래밍을 하다가 보면 메서드단위의 권한 설정때문에 짜증이 나는경우가 있습니다..-.-

그럴때 써줄수 있는것이 권한승격인데요.
(짜증난다는 이유로 권한승격은 잘못된 선택입니다. 웹파트나 워크플로나 추가기능의 실행시에 관리자 권한이 아니면 실행이 안되는 상황에만 써야 합니다.)

표준적으로는 아래의 것을 사용합니다.
SPSecurity.RunWithElevatedPrivileges(delegate()
{
    // 여기에 관리자 권한으로 실행해야 할 코드를 기술합니다.
});
예)
SPSecurity.RunWithElevatedPrivileges(delegate()
{
    using (SPSite site = new SPSite(web.Site.ID))
    {
       // "system account"계정으로 코드를 실행합니다.
       site.RootWeb.Name = "이름바꾸기";
    }
});


또는 저는 가끔씩 이것도 사용하죠...
          SPSite sps = null;
          SPSite spsimp = null;
          SPWeb spw = null;
          sps = SPControl.GetContextSite(System.Web.HttpContext.Current);
          SPUser systemAccount = sps.SystemAccount; //시스템 계정의 SPUser오브젝트를 취득해서
          SPUserToken token = systemAccount.UserToken; //시스템계정의 UserToken을 취득해서
          spsimp = new SPSite(sps.ID, token); //관리자 권한으로 SPSite를 인스턴스화
          spw = spsimp.RootWeb;

Trackback 0 Comment 1