当我发送超过过期日期的令牌时,为啥会收到 401 错误?

Posted

技术标签:

【中文标题】当我发送超过过期日期的令牌时,为啥会收到 401 错误?【英文标题】:Why do I get a 401 error when I send a token beyond its expiration date?当我发送超过过期日期的令牌时,为什么会收到 401 错误? 【发布时间】:2020-09-05 12:20:06 【问题描述】:

我在我的项目中使用了jwt,并且我有一系列通用的方法,但是由于某种原因,我需要在请求者的标头中发送令牌。发送token时,如果过期,报401错误,根本不进入方法。

该方法没有 Authorize 过滤器,并且这个问题,虽然根本没有 Route,但如果 header 中有令牌,则返回 401。

在到达Routing中间件之前,jwt OnAuthenticationFailed事件捕捉到了中间件的顺序,也观察Net core project 3.1

【问题讨论】:

不清楚你的要求。你的意思是它返回 401 虽然你添加了AllowAnonymous 属性?如果是这样,我认为你需要提供更多关于如何生成 jwt 以及你是如何生成的代码配置您的 Startup.cs。 【参考方案1】:

您需要使用 claim 来使用 jwt 重新生成令牌。

您使用的是什么前端脚本? jQuery 还是角度? 如果是 jQuery,则需要使用 jQuery ajaxprefilter。 这将在对服务器端进行实际调用之前执行。

所以如果token过期了,会在ajaxprefilter中检查。

如果过期,在 aap.net 核心中间件端调用声明并重新生成令牌。然后将进行原始调用。

【讨论】:

这不是问题。主要问题是它还对具有 AllowAnonymous 属性的方法进行身份验证

以上是关于当我发送超过过期日期的令牌时,为啥会收到 401 错误?的主要内容,如果未能解决你的问题,请参考以下文章

为啥刷新令牌过期不返回?

浏览器没有响应,但在邮递员中得到 401

仅在刷新页面时令牌过期时注销?为啥?

使用过期令牌发出同时 API 请求时如何避免多个令牌刷新请求

向服务器发送多个请求时,Okhttp 刷新过期令牌

重新发送使用过期令牌发出的请求会导致开发人员工具处于待处理状态