如何访问从客户端传递到控制器方法的jwt令牌数据?我需要令牌中的userId才能通过我的数据存储库层中的其他方法调用访问有关用户的更多数据。
我已经能够使用硬编码的令牌字符串来做到这一点,但是不能从客户端传递的令牌中实现。我将如何编写此控制器方法以将jwt令牌作为输入...或从此控制器方法中访问令牌字符串,从而检索我要查找的数据?
实际上如何将令牌传递到控制器方法中?
[HttpGet("tokenz")]
public ApplicationUser ParseToken()
{
var stringToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJXaWxsQGdtYWlsLmNvbSIsImp0aSI6IjMxMWM3ZGU5LTcxMDctNGI4MC1hMzViLTA4NjJlYTE1MjZjOCIsImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL25hbWVpZGVudGlmaWVyIjoiYzE3ZTEyNWItYmE0NC00N2MxLTg2NzUtOTc2ZmJlZDRlMTEyIiwiZXhwIjoxNTc2NDU0NDYxLCJpc3MiOiJodHRwczovL2xvY2FsaG9zdDo1NzA5NiIsImF1ZCI6Imh0dHBzOi8vbG9jYWxob3N0OjU3MDk2In0.VtsMgq7fc17M6y8kKHQRw3vO3M7aSrQgF62gw0-mXWg";
var handler = new JwtSecurityTokenHandler();
var tokenS = handler.ReadToken(stringToken) as JwtSecurityToken;
var tokenSubject = tokenS.Subject;
var appUser = _unitofWork.User.GetUserFromSubject(tokenSubject);
return appUser;
}
这不起作用:
JWT token data access from action/controller layer
或者这个:
Retrieving access token in controller
很好...
Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
[HttpPost("moretokenz")]
public JwtSecurityToken MoreToken(string strToken)
{
//Where would strToken come from?
return new JwtSecurityTokenHandler().ReadJwtToken(strToken);
}
答案 0 :(得分:1)
尝试一下:
[HttpGet]
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
public async Task<ActionResult<string>> Get()
{
var token = await HttpContext.GetTokenAsync("access_token");
return token;
}
答案 1 :(得分:0)
您只需要在JWT令牌的有效负载中获取声明即可。 访问https://jwt.io/introduction/
ul