SharePointを追加したhttpModuleでログインしたユーザーを取得します。

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}
.

役に立ちましたか?

解決

すでにここに答えた:

get.現在のログにログに記録されたユーザ名「アカウントはシステムとして動作する」

また注意したい:

  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 Priveは、システムアカウントとして表示されるアプリプールアカウントを使用します。提供されているコードでは、システムアカウントをすべて与える3つのメソッドが3つの方法がありますか?

現在使用しているアカウントではないアカウントではありません

を確認するには、ダミーアカウントでテストする必要があります。

編集

Windows Identityを使用してユーザーをログインすることができます。

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

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

異なるアカウントタイプを返すweb.configからの設定に依存します(エリアヴォイント付きPRIV)、SharePoint Central Admin(システムアカウントとしての設定アカウント):

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

編集

OK SO答えに基づいて、コードは正しい価値を渡すように機能していると言えます!間違っている場所は2か所になる可能性があります!

1)中央管理者を後継し、WebApplicationユーザーポリシーを確認してください。ユーザーをクリックし、[システムアカウントとして実行されている]をクリックすると、システムアカウントとして実行されているユーザーがシステムアカウントとして実行されることはありません。

私は同じ問題を示すSharePointサイトで作成されたローカルアカウントを持つことができるので、上記の気持ちが問題ではありません。その推定に基づいて、Number 2 ..

2)GOTO IISマネージャー - >問題のサイト(サイトをクリックしてください) - >詳細オプションをクリックしてください - >ポップアップが表示されます - >「物理パス認証情報」が空であることを確認してください。 ...ボタン「...」をクリックすると、ポップアップを入手する必要があります - >アプリケーションユーザーがチェックされていることを確認し、[OK]をクリックします。

あなたの問題を解決するべきです!

他のヒント

フォローしてみてください:

HttpContext.Current.User.Identity.Name
.

ライセンス: CC-BY-SA帰属
所属していません sharepoint.stackexchange
scroll top