我已经阅读了很多关于此问题的文章和Github问题,但我不确定最佳解决方案是什么 . 对于上下文,我有一个laravel API,在认证时,会发出一个小时的JWT . 当在该小时段之后发出第一个API请求时,API将返回401令牌到期错误 . 据我所知,有两种方法可以处理刷新令牌;
-
在接收令牌时的API中,如果它已过期但我们在刷新ttl内,刷新该令牌,正常继续请求并在头中返回新令牌
-
在客户端中,当返回带有过期代码的401响应时,使用旧令牌向API endpoints 发出请求,让API刷新并返回新令牌,然后重播任何挂起的API请求 .
第2项听起来不必要地复杂,因为您必须拦截并排队来自客户端的任何请求 . 哪种方式最好处理?
1 回答
第一个比第二个更有意义和更容易,因为如果令牌已过期而您不必等待401响应重放那些对UX不利的API请求,则不必存储请求 .
另一种方法是创建弹出窗口,让用户选择是否要获取新令牌 .