2017-07-11 9 views
0

私はasp.net mvcで新しく、_Layoutビューでユーザーの姓と名を表示する必要があります。Windowsの認証と姓の取得方法

私は私がどのように見える一つの解を見

@Request.LogonUserIdentity.Name.Substring(Request.LogonUserIdentity.Name.LastIndexOf(@"\") + 1) 

このラインを介してドメイン名の情報なしでユーザー名を持っている -

を参照System.DirectoryServices.AccountManagement

using (var context = new PrincipalContext(ContextType.Domain)) 
{ 
    var principal = UserPrincipal.FindByIdentity(context, User.Identity.Name); 
    var firstName = principal.GivenName; 
    var lastName = principal.Surname; 
} 

レイザーヘルパーを追加を追加ように:

@helper AccountName() 
    { 
     using (var context = new PrincipalContext(ContextType.Domain)) 
    { 
     var principal = UserPrincipal.FindByIdentity(context, User.Identity.Name); 
     @principal.GivenName @principal.Surname 
    } 
} 

しかし、_Layout.cshtmlのコントローラーはありません。もし私がそれを直接かみそりに入れても、それはどちらも動作しません。

どのようなヘルプはappriciatedされるでしょう!

+0

セッション... –

+0

を使用するのはどうでしょうか、ロジックはどこですか?私は_Layout.cshtml .. にそれを表示する必要があります、そして、私はどのようにセッションから姓と名を得ることができますか?私の知る限り、私はkey \ username \ computer nameを得ることができます... –

+0

ログイン後にセッション変数に姓と名を保存することができます。私はログインアクションの方法を意味します。その後、_Layoutページにあるものにアクセスできます。 –

答えて

0

okが、カミソリは、私は解決策を見つけるどのように動作するかの思考の多くは後にして、_Layout.cshtmlで -

<head> 
    @using System.DirectoryServices.AccountManagement; 
</head> 

<body> 
    @{ 
     var context = new PrincipalContext(ContextType.Domain); 
     var principal = UserPrincipal.FindByIdentity(context, User.Identity.Name); 
     var firstName = principal.GivenName; 
     var lastName = principal.Surname; 
    } 
<p class="navbar-brand"> @firstName @lastName </p> 
</body> 

は、それが役に立つことを願っています。

関連する問題