.Net Core 2.1过期的JWT令牌响应[发布vs获取]

时间:2018-11-14 09:46:51

标签: api asp.net-core jwt

我为项目实现了承载令牌认证,并且工作正常……直到我注意到令牌过期后,“获取” API会返回“ 401未经授权”,而“发布” API则返回“ 404”找不到”。

帖子回复的原因是什么?如何解决?

Startup.cs中的令牌配置

// add JWT authentication
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(options =>
    {
        options.TokenValidationParameters = new TokenValidationParameters
        {
            ClockSkew = TimeSpan.FromMinutes(5),
            ValidateIssuer = true,
            ValidateAudience = true,
            ValidateLifetime = true,
            ValidIssuer = Configuration["JWT:issuer"],
            ValidAudience = Configuration["JWT:audience"],
            IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes((string)Configuration["JWT:key"])),
             RequireSignedTokens = true,
             RequireExpirationTime = true
        };
    });

测试API

[HttpGet]
[Route("api/test1")]
public IActionResult test1()
{
    return Ok("1");
}
[HttpPost]
[Route("api/test2")]
public IActionResult test2()
{
    return Ok("2");
}

邮递员屏幕截图 Postman screenshot

1 个答案:

答案 0 :(得分:0)

我找到了问题。

使用自定义错误页面配置似乎导致了该问题。

app.UseStatusCodePagesWithReExecute("/Error/{0}");

我将其恢复为原始配置:

app.UseStatusCodePages();

,post API开始返回401。