将 ASP.NET 核心操作参数绑定到 JWT 声明

Bind ASP.NET Core action parameter to JWT claim

可以通过以下方式bind actions' parameters

我经常需要从 JWT 中提取一些东西,几乎总是 id(主键)。所以我这样做(暂时忽略错误检查):

var id = int.Parse(base.User.FindFirst(ClaimTypes.NameIdentifier)?.Value);

如果我可以将它放入一个像这样工作的属性绑定器中,那就太好了:

public IActionResult doStuff([FromBody] MyModel model, [FromJwt] int id) {
  // id works automatically
}

或者 [FromJwtId] 以使其更简单。

这样的事情可能吗?

我认为可以使用 HttpParameterBinding 创建这样的属性。

微软对此有 tutorial

声明中提供了您需要的 JWT 令牌的所有内容,您可以通过身份访问它们。

如果你想要一些循环,一种方法是创建一个抽象 class 继承自 Controller,你的 Controllers 继承自该 BaseController 来实现可重用和快速访问或实现一些 UserServices 提供与用户相关的一切,在启动文件中注册它,NetCore 为您输入它

(System.Security.Claims.ClaimsIdentity)User.Identity