SPContext.Current.Web.CurrentUser возвращает вводящее в заблуждение значение - PullRequest
5 голосов
/ 05 января 2009

Я пытаюсь узнать текущее имя пользователя для моего приложения sharepoint. Есть еще один способ сделать это. Однако способ sharepoint возвращает вводящее в заблуждение значение.

System.Security.Principal.WindowsIdentity.GetCurrent().Name // returns MY_COMPUTER\\my_user

HttpContext.Current.User.Identity.Name // returns MY_COMPUTER\\my_user

HttpContext.Current.Request.ServerVariables["AUTH_USER"] // returns MY_COMPUTER\\my_user

Microsoft.SharePoint.SPContext.Current.Web.CurrentUser.LoginName // returns SHAREPOINT\\system

В чем причина этого поведения? Буду ли я сталкиваться с проблемами, если буду использовать не-sharepoint?

Ответы [ 5 ]

6 голосов
/ 05 января 2009

Вы просматриваете как учетную запись администратора, которую использовали для установки системы? SharePoint «услужливо» переименует эту SHAREPOINT \ System. Используйте другую учетную запись, и все методы вернут одно и то же значение.

5 голосов
/ 05 января 2009

Это ожидается, если пользователь является учетной записью пула приложений, на которой запущено текущее веб-приложение.
Кстати, это должно быть то же имя, которое отображается в элементе управления приветствием (верхний левый элемент управления)

4 голосов
/ 26 августа 2010

Проблема в том, что вы, вероятно, получаете текущего пользователя из привилегированного SPWeb внутри кода RunWithElevatedPrivileges. Вы можете использовать фрагмент ниже, чтобы получить реального пользователя

SPWeb site = SPContext.Current.Web;
SPSecurity.RunWithElevatedPrivileges(delegate()
{
    using (SPSite ElevatedsiteColl = new SPSite(siteColl.ID))
   {
       using (SPWeb ElevatedSite = ElevatedsiteColl.OpenWeb(site.ID))
       {
            string currUser = site.CurrentUser; //not the ElevatedSite.CurrentUser
       }
   }
});

Это покажет реальное имя пользователя вместо SHAREPOINT \ System user.

1 голос
/ 31 декабря 2009

Я думаю, вы могли бы включить этот код в SPSecurity.RunWithElevatedPriviliges. Проверьте это один раз. Я не уверен, хотя

0 голосов
/ 12 января 2009

Другой способ, которым SPWeb.CurrentUser может вернуть SHAREPOINT \ system, - это если веб-сайт повышен, хотя я не уверен, почему SPContext.Current будет повышен. На какой странице вы видите такое поведение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...