.Net Core 2.1 过期的 JWT 令牌响应 [发布与获取]
Posted
技术标签:
【中文标题】.Net Core 2.1 过期的 JWT 令牌响应 [发布与获取]【英文标题】:.Net Core 2.1 expired JWT token response [Post vs Get] 【发布时间】:2019-04-17 05:47:16 【问题描述】:我为一个项目实现了不记名令牌身份验证,它工作正常...直到我注意到当令牌过期时,“获取”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");
邮递员截图
【问题讨论】:
【参考方案1】:我找到了问题。
看起来是使用自定义错误页面配置导致了问题。
app.UseStatusCodePagesWithReExecute("/Error/0");
我将其恢复为原始配置:
app.UseStatusCodePages();
并且 post API 开始返回 401。
【讨论】:
以上是关于.Net Core 2.1 过期的 JWT 令牌响应 [发布与获取]的主要内容,如果未能解决你的问题,请参考以下文章
如何注销或过期 ASP.NET Core Web API 的 JWT 令牌?
直接从令牌获取 JWT 声明,ASP Net Core 2.1