[英]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.