Получите текущий вошедший пользователь в SharePoint добавлен HTPModule

sharepoint.stackexchange https://sharepoint.stackexchange.com/questions/100976

  •  28-09-2020
  •  | 
  •  

Вопрос

Как я могу получить текущий вошел в систему пользователя в SharePoint в добавленном модуле?

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

   SPUser user = null;

    using (SPSite site = new SPSite(@"siteName"))
    {

        using (SPWeb web = site.OpenWeb())
        {

            user = web.CurrentUser;
        }
    }

 //and

 SPContext.Current.Web.CurrentUser

 //and

  public SPUser GetUserWithElevated()
  {
    SPUser user = null;

    SPSecurity.CodeToRunElevated elevatedSubmit = new 
    SPSecurity.CodeToRunElevated(delegate
    {

         user = SPContext.Current.Web.CurrentUser;
    });
    SPSecurity.RunWithElevatedPrivileges(elevatedSubmit);

    return user;
 }


//this is my Httpmodule: 

 public void Init(HttpApplication context)
{
    context.PreRequestHandlerExecute += new 
 EventHandler(context_PreRequestHandlerExecute);
 }

 void context_PreRequestHandlerExecute(object sender, EventArgs e)
 {
    Page page = HttpContext.Current.CurrentHandler as Page;
    if (page != null)
    {
        // register handler for PreInit event
        page.PreInit += new EventHandler(page_PreInit);
    }
 }

 void page_PreInit(object sender, EventArgs e)
 { //user interception goes here}
.

Это было полезно?

Решение

уже ответил здесь:

получить Текущее зарегистрированное имя пользователя для пользователя Учетная запись работает как система "

Также нравится отметить:

  public SPUser GetUserWithElevated()
  {
    SPUser user = null;

    SPSecurity.CodeToRunElevated elevatedSubmit = new 
    SPSecurity.CodeToRunElevated(delegate
    {

         user = SPContext.Current.Web.CurrentUser;
    });
    SPSecurity.RunWithElevatedPrivileges(elevatedSubmit);

    return 
  }
.

Ваш работает под системной учетной записью;)

Также нравится отметить, если решение в другом ответе не работает, поскольку я предполагаю, что это может быть, потому что ваша учетная запись работает под системной учетной записью? Когда вы войти в SharePoint, какое имя пользователя отображается?

Под модулем это должно работать:

HttpContext.Current.User.Identity.Name
.

Если это не работает, чем попробуйте метод SPContext:

SPContext.Current.Web.CurrentUser.LoginName
.

Как я уже сказал, перейдите на URL в браузере, чтобы сначала убедитесь, что учетная запись, которую ваше использование не устанавливается как системная учетная запись. Runwithelevated Priv использует учетную запись пула приложения, которая также показывает как системный счет! В предоставленном вами коде вы пробовали три метода, которые вы пробовали, что все дают системные аккаунты?

Вам необходимо проверить с фиктивным аккаунтом, чтобы убедиться, что это не учетная запись, которую вы используете в настоящее время, это проблема

Редактировать

Если вы используете удостоверение личности Windows, чтобы войти пользователей в SharePoint, чем вы можете сделать:

string getCurrentWindowsUserName = WindowsIdentity.GetCurrent().Name;
.

http:// msdn. Microsoft.com/en-us/library/vstudio/sfs49sw0(v=vs.100).aspx

Возвращая разные типы учетных записей зависит от ваших настроек, которые вы имеете из Web.config, чтобы код, как у вас выше (Elvated Priv), чтобы SharePoint Central Admin (учетная запись настройки в качестве системной учетной записи):

http://msdn.microsoft.com/en-us/library /aaa302377.aspx

Редактировать

ОК, поэтому на основе вашего ответа ниже я могу сказать, что код работает как его передача правильного значения! Место его идет не так, может быть в двух местах!

1) goto Центральный администратор и проверьте политику пользователя webapplation. Нажмите на пользователя и посмотрите, проверяется, проверяется, проверяется ли системная учетная запись в виде системной учетной записи в том, что он знает, что не является запущенным в качестве системного аккаунта.

У меня есть сильное ощущение, что вышеизложенное не является проблемой, поскольку вы можете иметь локальные учетные записи, созданные на сайте SharePoint, которые также показывают ту же проблему? На основании этой презумпции следуйте номер 2 ..

2) GOTO IIS Manager -> Перейти к вопросу о сайте (щелкните на сайте) -> На правой стороне нажмите «Дополнительные параметры» -> появится всплывающее окно -> Убедитесь, что «учетные данные физических путей» пусты. ... Нажмите на кнопку «...», и вы должны получить всплывающее окно -> Убедитесь, что у вас есть проверка пользователя приложений и нажмите OK!

Надеюсь выше, следует решить вашу проблему!

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

Попробуйте следуйте:

HttpContext.Current.User.Identity.Name
.

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