выдавать себя за другого пользователя внутри кода веб-части - PullRequest
3 голосов
/ 02 марта 2011

Я использую списки sharepoint в качестве базы данных.Я хочу как-то выдать себя за другого пользователя в коде веб-части, и у меня будет и право на запись и редактирование списка.

Моя цель - иметь полное представление только через код веб-части..

Я использую MOSS 2007.

Ответы [ 2 ]

11 голосов
/ 02 марта 2011

SPSecurity.RunWithElevatedPrivilieges () выполнит ваш код как системную учетную запись, то есть учетную запись, под которой запускается пул приложений, что может или не может быть тем, что вы хотите сделать.Например, если к списку прикреплен рабочий процесс, который должен запускаться при добавлении в список новых элементов, он не сработает, если вы добавите новый элемент списка под учетными данными системной учетной записи (это было исправление безопасностивведено в SharePoint 2007 SP 1).В этом случае вам придется выполнить операцию вставки под другой учетной записью, которая имеет правильные разрешения в списке.

Вы можете получить UserToken для любого пользователя, используя следующий код:

        SPUserToken userToken = null;
        SPSecurity.RunWithElevatedPrivileges(() =>
        {
            using (SPSite site = new SPSite(SPContext.Current.Site.ID))
            {
                using (SPWeb web = site.OpenWeb(SPContext.Current.Web.ID))
                {
                    userToken = web.AllUsers["domain\\username"].UserToken;
                }
            }
        });

Замените «домен \ имя пользователя» на правильное имя учетной записи Windows.Затем вы можете передать этот пользовательский токен одной из перегрузок конструктора объекта SPSite, чтобы выполнить код с учетными данными этого пользователя, например:

        using (SPSite site = new SPSite(SPContext.Current.Site.ID, userToken))
        {
            using (SPWeb web = site.OpenWeb(SPContext.Current.Web.ID))
            {
                // This code will execute under the credentials of the userToken user
            }
        }

Надеюсь, это поможет.

3 голосов
/ 02 марта 2011
...