我正在使用 .Net Core 2.1 和 JWT,
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
在我的控制器类上使用装饰器。在2.0版本中,似乎必须执行以下操作,但现在已被标记为过时:
var authenticateInfo = await HttpContext.Authentication.GetAuthenticateInfoAsync("Bearer");
string accessToken = authenticateInfo.Properties.Items[".Token.access_token"];
我看到过其他比较绕的方法来扩展授权类等,但我宁愿避免使用。 我只想访问令牌的细节,就像我编码它们一样,例如 .Sub,以及我添加的自定义声明,如“名称”和“角色”。 在 .Net Core 2.1 中如何实现?
User
将具有Identity
属性,因为HttpContext.User
返回一个具有Identity
属性的ClaimsPrincipal
。我用相关的.NET Core 2.1文档更新了答案链接。 - Shaun LuttinUser
对象中显示其声明。 - Shaun LuttinUser.Claims
,在我的情况下是User.Claims.Where(c => c.Type == "AgentId").FirstOrDefault()?.Value
。 - Jonny