具有 [Authorize] 属性的 JWT 身份验证

Posted

技术标签:

【中文标题】具有 [Authorize] 属性的 JWT 身份验证【英文标题】:JWT auth with [Authorize] attribute 【发布时间】:2018-12-03 02:45:26 【问题描述】:

有人能解释一下默认的 Asp.Net 核心属性 [Authorize](使用 Asp.Net Identity)如何理解它应该如何解码 JWT 令牌并获取必要的信息以进行授权访问吗? 在形成 JWT 令牌时,我为用户放入令牌 RoleClaims,[Authorize] 是否基于声明授予他们对特定 actionMethod 的访问权限

【问题讨论】:

【参考方案1】:

您可以使用以下代码访问您的声明:

User.Claims.FirstOrDefault(el => el.Type == claim)?.Value

【讨论】:

【参考方案2】:

更多详情请点击此链接 Create JWT & Authorize

    [Authorize]
    [HttpPost]
    public string Post()
    
        var identity = HttpContext.User.Identity as ClaimsIdentity;
        IEnumerable<Claim> claim = identity.Claims;
        var UserName = claim.Where(c => c.Type == "UserName").Select(c => c.Value).SingleOrDefault();

        return "Welcome to " + UserName + "!";
    

【讨论】:

以上是关于具有 [Authorize] 属性的 JWT 身份验证的主要内容,如果未能解决你的问题,请参考以下文章

.NET Core Authorize 属性与外部 JWT 身份验证微服务?

JWT Authentication .Net core [Authorize] 属性被控制器忽略

ASP.NET Core JWT 身份验证以保护 webAPI [Authorize] 属性错误 401 Unauthorized

添加 Authorize 属性时 Web api 核心返回 404

Blazor Wasm 身份验证

使用 SignalR 的 JWT 身份验证失败