Доступ запрещен при использовании runwithelevatedPrivileges?
-
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 Это не имеет повышенных привилегий. Считайте это сообщение: