【发布时间】:2019-05-21 10:26:09
【问题描述】:
所以我环顾四周,我想知道我是否可以以某种方式使用我在我的代码内部授权请求的标头上发送的 jwt 令牌,或者一旦请求到达 web api 端点它就会丢失?
我想使用令牌来提取某些信息,而不将令牌作为我身体的一部分发送。
我尝试在我的 web api 项目中使用 jwt 库,但没有成功
我想使用令牌来提取某些信息,而不是将令牌作为我身体的一部分发送。例如我的电子邮件。
【问题讨论】:
所以我环顾四周,我想知道我是否可以以某种方式使用我在我的代码内部授权请求的标头上发送的 jwt 令牌,或者一旦请求到达 web api 端点它就会丢失?
我想使用令牌来提取某些信息,而不将令牌作为我身体的一部分发送。
我尝试在我的 web api 项目中使用 jwt 库,但没有成功
我想使用令牌来提取某些信息,而不是将令牌作为我身体的一部分发送。例如我的电子邮件。
【问题讨论】:
您应该能够从附加到 HttpContext 的原则中阅读声明
var identity = HttpContext.User.Identity as ClaimsIdentity;
if (identity != null)
{
return identity.FindFirst("email").Value;
}
否则,您可以使用 JwtSecurityTokenHandler 验证令牌,获取原则,然后从该原则中读取声明:
JwtSecurityTokenHandler tokenHandler = new JwtSecurityTokenHandler();
var principle = tokenHandler.ValidateToken(token, .... );
return principal.Claims.SingleOrDefault(c => c.Type == "email").Value;
您可以从 HttpRequestMessage(请求)的标头中获取不记名令牌。
IEnumerable<string> headers;
request.Headers.TryGetValues("Authorization", out headers);
return headers.ElementAt(0); // Bearer Token
【讨论】: