【问题标题】:What is the right way to retrieve the email from the JWT token从 JWT 令牌中检索电子邮件的正确方法是什么
【发布时间】:2022-02-04 23:10:17
【问题描述】:

我正在开发 .net 6 web api 项目。

在端点中,我从通过标头传递的 JWT 令牌中检索电子邮件值。

以下代码允许我从 JWT 令牌中检索电子邮件:

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

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

【问题讨论】:

标签: c# .net jwt


【解决方案1】:

我建议做一个扩展方法:

 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 属性添加到您将从中调用扩展方法的控制器,并确保在创建 JWT 令牌时添加电子邮件声明。

[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]

【讨论】:

    猜你喜欢
    • 2019-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 2015-03-06
    • 1970-01-01
    相关资源
    最近更新 更多