即使令牌已通过验证,控制器也会未经授权返回

时间:2020-05-22 22:23:01

标签: c# asp.net-web-api2

嗨,我正在添加基于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呼叫时,即使我使用招摇牌授权了它,它仍然没有被修饰吗?并使用令牌调用的响应?

enter image description here

编辑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授权标头。”, });

我有一个想法,那就是这没有传递给我的标头? enter image description here

0 个答案:

没有答案
相关问题