用 Postman 添加 JWT 认证后没有响应?

Posted

技术标签:

【中文标题】用 Postman 添加 JWT 认证后没有响应?【英文标题】:No response after adding JWT authentication with Postman? 【发布时间】:2020-04-17 00:53:38 【问题描述】:

我正在尝试将 JWT 身份验证添加到我的 ASP.NET Core Web API。

这是我在ConfigureService 方法中添加的内容:

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>

    options.TokenValidationParameters = new TokenValidationParameters
    
        ValidateIssuer = true,
        ValidateAudience = true,
        ValidateLifetime = true,
        ValidateIssuerSigningKey = true,
        ValidIssuer = Configuration["Jwt:Issuer"],
        ValidAudience = Configuration["Jwt:Issuer"],
        IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Jwt:Key"]))
    ;
);

Configure 方法中的这一行:

 app.UseAuthentication();

当然我在appsettings.json中添加了JWT设置:

"Jwt": 
     "Key": "ThisismySecretKey",
     "Issuer": "https://localhost:44311/"
    

这是处理 post 类以返回 jwt 令牌的代码:

[AllowAnonymous]
[HttpPost]
public IActionResult Login([FromBody]UserModel login)

    IActionResult response = Unauthorized();
    var user = AuthenticateUser(login);

    if (user != null)
    
        var tokenString = GenerateJSONWebToken(user);
        response = Ok(new  token = tokenString );
    

    return response;

并在我的Get 方法中添加了[Authorize] 属性:

[HttpGet]
[Authorize]
public ActionResult<IEnumerable<string>> Get()

    return new string[]  "value1", "value2" ;

问题是当我从 Postman 调用端点时,除非我删除 Authorize 属性,否则我不会得到任何响应!

【问题讨论】:

The problem is when I call the endpoints from Postman, I don't get any response unless I remove the Authorize attribute!-您是否使用请求标头发布密钥? 可以分享一下GenerateJSONWebToken方法吗? 【参考方案1】:

我发现问题的原因是在 Postman 中设置了 SSL 证书:

【讨论】:

【参考方案2】:

我认为问题出在你的关键,我已经改变了它并且它有效。我不确定,但长度可能是个问题。 试试这个,

"Jwt": 
 "Key": "THIS IS MY SECRET KEY DID YOU LIKE IT",
 "Issuer": "https://localhost:44311/"

【讨论】:

以上是关于用 Postman 添加 JWT 认证后没有响应?的主要内容,如果未能解决你的问题,请参考以下文章

模拟在SpringBoot项目中使用Jwt做登录认证

抓取网页请求,然后用Postman发送请求

JWT认证机制

Express-jwt 没有返回任何响应

DJANGO + JWT 令牌认证

laravel dingo/api添加jwt-auth认证