我开始了解JWT并开发一个使用Firebase对用户进行身份验证的Firebase。
由于JWT令牌是在需要授权的请求中发送的,所以我想知道是否可以访问它并以某种方式解码它,而不显式地将它设置为参数?
下面是一些使用JWT进行授权的代码
[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?
}
发布于 2019-11-08 17:14:40
如何访问JWT令牌并对其进行解码以获得用户uid?
我无法理解为什么您需要访问一个JWT令牌来获取用户id,因为HttpContext
对象已经将请求的当前principal
公开为User
属性。ASP.NET核心也不对每个请求发送JWT令牌。它发送用户登录时创建的加密身份验证cookie,它只包含来自该JWT令牌的声明。
principal
是当前用户,实现为ClaimsPrincipal。它包含一组描述所述用户的声明,并包含用户的ID以及它从身份提供者获得的其他声明。
如果我们在一个从controller和ControllerBase基类继承的控制器中,那么我们可以像这样访问用户主体:
[HttpPost]
[Authorize(Policy = Policies.Admin)]
public async Task<IActionResult> CreateVehicle([FromBody]SaveVehicleResource vehicleResource)
{
var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
}
https://stackoverflow.com/questions/58775241
复制相似问题