嗨,我正在添加基于jwt令牌的身份验证,当用户请求令牌然后获得授权进行呼叫时,仍然遇到麻烦。我已经在jwt.io上对其进行了检查,但是当我在其中放置我的秘密密钥时它才有效。
所以不确定还有什么。
这是我的代码。
[AllowAnonymous]
[HttpPost]
public IActionResult CreateToken([FromBody] LoginModel login) {
IActionResult response = Unauthorized();
var user = Authenticate(login);
if (user != null) {
var tokenString = BuildToken(login);
response = Ok(new { token = tokenString });
}
return response;
}
这就是我建立令牌的方式
private string BuildToken(LoginModel login) {
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config["JwtToken:SecretKey"]));
var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
JwtSecurityToken token;
token = new JwtSecurityToken(_config["JwtToken:Issuer"],
_config["JwtToken:Issuer"], expires: DateTime.Now.AddMinutes(30),
signingCredentials: creds);
return new JwtSecurityTokenHandler().WriteToken(token);
}
当我检查get呼叫时,即使我使用招摇牌授权了它,它仍然没有被修饰吗?并使用令牌调用的响应?
编辑2 即使添加以下内容,我仍然会收到401。
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
代码详细信息401未记录的错误:响应标头日期:22日,星期五 2020年5月22:36:30 GMT服务器:Microsoft-IIS / 10.0状态:401
www-authenticate:x承载者:ASP.NET
编辑3
我应该声明我正在使用招摇的Ui通过标准方法传递屏障令牌。 c.AddSecurityDefinition(“ bearer”,新的OpenApiSecurityScheme {名称=“授权”, 类型= SecuritySchemeType.ApiKey, 方案=“承载者”, BearerFormat =“ JWT”, 在= ParameterLocation.Header中, Description =“使用承载方案的JWT授权标头。”, });