How to get claim inside Asp.Net Core Razor View

前端 未结 3 567
名媛妹妹
名媛妹妹 2020-12-16 12:46

I did it in my rc1 project like:

User.Claims.ElementAt(#).Value

But after I switched to rtm it wouldn’t work anymore. When I debug the Razo

相关标签:
3条回答
  • 2020-12-16 13:21

    In Core 3.0, use view authorization

    Startup.cs

        services.AddAuthorization(options =>
        {
            options.AddPolicy("Claim_Name", x => x.RequireClaim("Claim_Name"));
        });
    

    Then inside the UI

        if ((AuthorizationService.AuthorizeAsync(User, "Claim_Name")).Result.Succeeded){
            //show ui element
        }
    

    View-based authorization in ASP.NET Core MVC

    0 讨论(0)
  • 2020-12-16 13:25

    Tested in .net core 2.2 in the razor page :

    @User.FindFirst("nameOfClaim").Value

    0 讨论(0)
  • 2020-12-16 13:42

    Assuming you have claims attached to the current principal. In your Razor view:

    @((ClaimsIdentity) User.Identity)
    

    This will give you access to the ClaimsIdentity of the current user. In an effort to keep your claims fetching clean you may want to create an extension method for searching claims.

    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;
    }
    

    Then you can just access whatever claim you want with:

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

    Hope this helps.

    Quick search for claims identity in razor view came up with a similar question and answer: MVC 5 Access Claims Identity User Data

    0 讨论(0)
提交回复
热议问题