刷新令牌,等待前端用 axios 刷新

问题描述 投票:0回答:1

有没有办法在我等待刷新端点返回时阻止所有 api 调用?我知道 axios 有拦截器,但是在访问令牌过期后我将如何延迟所有后续调用?否则,如果在访问令牌仍在刷新时单击某些内容,用户只会收到一些错误消息。似乎比我最初想象的要复杂,我是否遗漏了什么,是否有一些图书馆已经可以管理这个?

我想我可以创建一个队列并在刷新仍在进行时取消所有调用,然后从队列中重新运行这些请求,但是有没有更优雅/已经实现的方法?

更不用说,我还应该考虑在同一个会话中可以打开多个选项卡,所以可能还需要一个 BroadcastChannel。它变得非常复杂......

javascript axios frontend refresh-token broadcast-channel
1个回答
0
投票

FWIW 我认为这是一个 XY 问题 的例子。这个答案并没有说明如何做你要求做的事情,而是建议你采取不同的方法来解决潜在的问题。

我认为这是您需要在服务器端处理的事情。尝试在客户端处理它似乎不太合适。

任何使用过时令牌发送的请求都将通过后端的令牌刷新工作流进行路由。刷新令牌的过程应该是幂等的,因此使用旧令牌刷新的多个连续或并发请求应该返回相同的新令牌(如果请求被拒绝,则返回错误。)

如果之前的调用已经开始刷新令牌的过程,则这些响应的解析将等待新令牌可用(或使用相同的幂等方法再次生成,如上所述。)

另一方面,如果用户提出不需要会话的请求,该请求处理将跳过令牌验证/刷新逻辑,只发送适当的响应。

© www.soinside.com 2019 - 2024. All rights reserved.