首页 文章

刷新JWT应该是API还是客户的责任?

提问于
浏览
2

我已经阅读了很多关于此问题的文章和Github问题,但我不确定最佳解决方案是什么 . 对于上下文,我有一个laravel API,在认证时,会发出一个小时的JWT . 当在该小时段之后发出第一个API请求时,API将返回401令牌到期错误 . 据我所知,有两种方法可以处理刷新令牌;

  • 在接收令牌时的API中,如果它已过期但我们在刷新ttl内,刷新该令牌,正常继续请求并在头中返回新令牌

  • 在客户端中,当返回带有过期代码的401响应时,使用旧令牌向API endpoints 发出请求,让API刷新并返回新令牌,然后重播任何挂起的API请求 .

第2项听起来不必要地复杂,因为您必须拦截并排队来自客户端的任何请求 . 哪种方式最好处理?

1 回答

  • 2

    在接收令牌时的API中,如果它已经过期但我们在刷新ttl内,刷新该令牌,正常继续请求并在头中返回新令牌

    第一个比第二个更有意义和更容易,因为如果令牌已过期而您不必等待401响应重放那些对UX不利的API请求,则不必存储请求 .

    另一种方法是创建弹出窗口,让用户选择是否要获取新令牌 .

相关问题