私はrc1プロジェクトでそれを次のように行いました:
User.Claims.ElementAt(#).Value
しかし、rtmに切り替えた後は機能しなくなります。 Razorビューをデバッグすると、オブジェクトは同じように見えますが、User.Claimsは空です。その理由が何であるかについての考え。
現在のプリンシパルに添付されたクレームがあると仮定します。 Razorビューで:
@((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")
お役に立てれば。
かみそりビューでクレームIDをすばやく検索すると、同様の質問と回答が得られました。 MVC 5 Access Claims Identity User Data
Core 3.0では、ビュー認証を使用します
Startup.cs
services.AddAuthorization(options =>
{
options.AddPolicy("Claim_Name", x => x.RequireClaim("Claim_Name"));
});
次に、UI内
if ((AuthorizationService.AuthorizeAsync(User, "Claim_Name")).Result.Succeeded){
//show ui element
}