web-dev-qa-db-ja.com

Asp.Net Core Razor View内でクレームを取得する方法

私はrc1プロジェクトでそれを次のように行いました:

User.Claims.ElementAt(#).Value

しかし、rtmに切り替えた後は機能しなくなります。 Razorビューをデバッグすると、オブジェクトは同じように見えますが、User.Claimsは空です。その理由が何であるかについての考え。

16
Sknecht

現在のプリンシパルに添付されたクレームがあると仮定します。 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

22
JDupont

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
    }

ASP.NET Core MVCでのビューベースの承認

0
Jeff Li