首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在.Net Core2.1中隐式访问JWT令牌?

如何在.Net Core2.1中隐式访问JWT令牌?
EN

Stack Overflow用户
提问于 2019-11-09 00:16:07
回答 1查看 117关注 0票数 0

我开始了解JWT并开发一个使用Firebase对用户进行身份验证的Firebase。

由于JWT令牌是在需要授权的请求中发送的,所以我想知道是否可以访问它并以某种方式解码它,而不显式地将它设置为参数?

下面是一些使用JWT进行授权的代码

代码语言:javascript
代码运行次数:0
运行
复制
[HttpPost]
[Authorize(Policy = Policies.Admin)]
public async Task<IActionResult> CreateVehicle([FromBody]SaveVehicleResource vehicleResource)
{
        //How can I access the JWT token and decode it to get the user uid?
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-09 01:14:40

如何访问JWT令牌并对其进行解码以获得用户uid?

我无法理解为什么您需要访问一个JWT令牌来获取用户id,因为HttpContext对象已经将请求的当前principal公开为User属性。ASP.NET核心也不对每个请求发送JWT令牌。它发送用户登录时创建的加密身份验证cookie,它只包含来自该JWT令牌的声明。

principal是当前用户,实现为ClaimsPrincipal。它包含一组描述所述用户的声明,并包含用户的ID以及它从身份提供者获得的其他声明。

如果我们在一个从controller和ControllerBase基类继承的控制器中,那么我们可以像这样访问用户主体:

代码语言:javascript
代码运行次数:0
运行
复制
[HttpPost]
[Authorize(Policy = Policies.Admin)]
public async Task<IActionResult> CreateVehicle([FromBody]SaveVehicleResource vehicleResource)
{
        var userId =  User.FindFirstValue(ClaimTypes.NameIdentifier);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58775241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档