【问题标题】:How can I access a JWT token implicitly in .Net Core 2.1?如何在 .Net Core 2.1 中隐式访问 JWT 令牌?
【发布时间】:2023-03-16 09:20:01
【问题描述】:

我开始学习 JWT 并开发一个使用 Firebase 对用户进行身份验证的 Angular 应用程序。

由于 JWT 令牌是在需要授权的请求中发送的,我想知道是否可以在不明确将其设置为参数的情况下访问它并以某种方式对其进行解码?

这里是一些使用 JWT 进行授权的代码

[HttpPost]
[Authorize(Policy = Policies.Admin)]
public async Task<IActionResult> CreateVehicle([FromBody]SaveVehicleResource vehicleResource)
{
        //How can i acces the JWT token and decode it to get the user uid?
}

【问题讨论】:

    标签: c# .net-core jwt


    【解决方案1】:

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

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

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

    如果我们在一个继承自 Controller 和 ControllerBase 的控制器中 基类,然后我们可以像这样访问 User 主体:

    [HttpPost]
    [Authorize(Policy = Policies.Admin)]
    public async Task<IActionResult> CreateVehicle([FromBody]SaveVehicleResource vehicleResource)
    {
            var userId =  User.FindFirstValue(ClaimTypes.NameIdentifier);
    }
    

    【讨论】:

      猜你喜欢
      • 2022-11-09
      • 2019-05-11
      • 2019-01-21
      • 2020-01-17
      • 1970-01-01
      • 2018-10-07
      • 2019-04-06
      • 2020-08-12
      • 2019-04-17
      相关资源
      最近更新 更多