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