2016-08-24 9 views
3

内の申し立てを受けたために、私は私のようなRC1プロジェクトでそれをやった方法:Asp.Netコアレイザービュー

User.Claims.ElementAt(#).Value 

しかし、私はRTMに切り替えた後、それはもう動作しません。 Razorビューをデバッグすると、オブジェクトは同じように見えますが、User.Claimsは空です。どのような理由が考えられるか。

+0

かみそりビューでの請求のアイデンティティのためのクイック検索では、同様の質問と答えを思い付きました。私はクッキーを設定する行にタイプミスがあります:HttpContext.Authentication.SignInAsync( "typo here"、新しいClaimsPrincipal(auth));.不必要な仕事の人には申し訳ありません。 – Sknecht

+0

JDupontの回答のようにクレームタイプを使用したいと思うかもしれません。 – juunas

+1

システムからのクレームを取り除いたら、すでに範囲外になっています。それはすでにボード上の仕事ですが、周りにはジェット機がありません。 – Sknecht

答えて

7

現在のプリンシパルにクレームが添付されているとします。レイザービューでは:

@((ClaimsIdentity) User.Identity) 

これにより、現在のユーザーのClaimsIdentityにアクセスできます。クレームを清潔に保つため、クレームを検索するための拡張方法を作成することができます。

public static string GetSpecificClaim(this ClaimsIdentity claimsIdentity, string claimType) 
{ 
    var claim = claimsIdentity.Claims.FirstOrDefault(x => x.Type == claimType); 

    return (claim != null) ? claim.Value : string.Empty; 
} 

それからちょうどあなたが好きな主張にアクセスすることができます

@((ClaimsIdentity) User.Identity).GetSpecificClaim("someclaimtype") 

・ホープ、このことができます。私は問題を発見 MVC 5 Access Claims Identity User Data