繁体   English   中英

从 JWT 令牌中检索 email 的正确方法是什么

[英]What is the right way to retrieve the email from the JWT token

我正在研究 .net 6 web api 项目。

在端点中,我从通过 header 传递的 JWT 令牌中检索 email 值。

以下代码允许我从 JWT 令牌中检索 email:

string email = HttpContext.User.FindFirst(ClaimTypes.Email)?.Value

我知道 FindFirst 是在我期望多个值并且我想检索第一个值时使用的。 所以我想问一下.FindFirst是否是正确的方法? 或者我是否应该使用.FirstOrDefault.Single之类的关键字?

我建议制作一个扩展方法:

 public static string GetUserEmail(this HttpContext httpContext)
 {
      if (httpContext.User == null)
      {
          return string.Empty;
      }

      return httpContext.User.Claims.Single(x => x.Type == ClaimTypes.Email).Value;
  }

确保将以下 Authorize 属性添加到您将从中调用扩展方法的 controller 中,并确保在创建 JWT 令牌时添加 email 声明。

[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM