2016-07-06 6 views
6

ASP.NET Core RC2を使用してMVC6でイントラネットサイトを構築しました。イントラネットサイトにアクセスしている人のWindowsユーザー名を取得したい。ASP.NET Core RC2 MVC6とIIS7で現在のWindowsユーザーを取得する方法

ジムがイントラネットサイトに行くと、私はそのサイトに "Domain \ Jim"を受け取り、Anneはイントラネットサイトに行くと "Domain \ Anne"を受け取るようにします。

IISサーバーでのみWindows認証が有効になっています。匿名認証は無効です。

私のサイトは、Windows認証を使用し、匿名認証を無効にするように設定されています。

<system.web> 
    <authentication mode="Windows" /> 
    <authorization> 
     <deny users="?"/> 
    </authorization> 
</system.web> 

デバッグを通して、私はSystem.Security.Principal.WindowsIdentity.GetCurrent().Nameを使用することができますが、それは当然リターンのIISサーバー上で「APPPOOL \サイト名をIIS」。

HttpContextを使用している古いバージョンのASP.NETの例が多く見つかりましたが、次のものを使用してコントローラに注入しようとしましたが、userNameがnullに終わりました。

//Startup.cs 
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>(); 

//HomeController.cs 
public HomeController(IHttpContextAccessor _accessor) 
{ 
    string userName = _accessor.HttpContext.User.Identity.Name; 
} 

ASP.NET Core RC2 MVC6のイントラネットサイトにWindowsユーザー名を渡す正しい方法は何ですか?

+0

あなたのサイトへの匿名アクセスを無効にしましたか? – DavidG

+0

はい。私はの内部でそれを無効にしました。 ブロックで質問を更新しました。 – Kyle

+0

認証ミドルウェアが登録されていますか? – DavidG

答えて

2

イントラネットアプリケーションでWindows認証を使用しているユーザーのうち、ユーザーに関する情報を取得したいだけのユーザーにとっては、思ったほうが簡単です。

この行は、現在のユーザーのユーザー名をDOMAIN \ username形式で取得します。

var userId = this.User.Identity.Name; 

私は彼らのほとんどは、私がいないボックスWindows認証のうち、ADに対して認証するために、個々のアカウントを実装したと仮定することを実現する前に、他の回答を見いくつかの時間を費やしました。

0

var userId = this.User.Identity.Name;が私のために働いた。私のアプリはイントラネット上で動作しており、私が探しているのは、WindowsからユーザーのログインIDを取得することだけです。既にActive Directoryに格納されているので、ユーザーの情報を保存する必要はありませんでした。  

関連する問題