Доступ запрещен при использовании runwithelevatedPrivileges?

StackOverflow https://stackoverflow.com/questions/3049393

  •  27-09-2019
  •  | 
  •  

Вопрос

Я хочу, чтобы обычный пользователь мог получить доступ к «списку информации о пользователе» в корневом сайте MySite. Я использую метод «RunwithelevatedPrivileges». Все еще бросание доступа запрещено ошибка. За пример мой корневой коллекции сайта для mysite "http://network.test.com.«. Пользователь хочет оценить список UserInformation, список этих сайтов. Как он может получить доступ к этому?

 SPSecurity.RunWithElevatedPrivileges(delegate
 {
   using (SPSite site = new SPSite(SPContext.Current.Web.Site.ID))
   {

   ServerContext sc = ServerContext.Current;
   UserProfileManager upm = new UserProfileManager(sc);
   UserProfile up = null;
   //get current user's profile (visitor)
   if (upm.UserExists(SPContext.Current.Web.CurrentUser.LoginName))
   {
       up =upm.GetUserProfile(SPContext.Current.Web.CurrentUser.LoginName);

      SPWeb web = SPContext.Current.Web;
      SPList userInformationList = web.Lists["User Information List"];
Это было полезно?

Решение

SPContext.Current бежит за пределами RunWithelevatedPrivileges повышенный контекст. Для получения дополнительной информации см. это Сообщение блога.

Другие советы

Вы устанавливаете свой SPWEB в SPContext.Current.Web, это не имеет повышенных привилегий. Только SPWEBS, созданные из SPSITES, созданных внутри делегата, повышены.

Так что вам нужно заменить

SPWeb web = SPContext.Current.Web;

с

SPWeb web = site.OpenWeb(SPContext.Current.Web.ID);

Вы устанавливаете ваш SPWEB в SPContext.Current.Web Это не имеет повышенных привилегий. Считайте это сообщение:

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top