簡體   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