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

时间:2017-04-17 11:53:13

标签: php authentication jwt

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

  1. 在接收令牌时的API中,如果它已过期但我们在刷新ttl内,请刷新该令牌,正常继续请求并在标题中返回新令牌
  2. 在客户端中,当返回带有过期代码的401响应时,使用旧令牌向API端点发出请求,刷新API并返回新令牌,然后重播任何待处理的API请求。
  3. 第2项听起来不必要地复杂,因为您必须拦截并排队来自客户端的任何请求。哪种方式最好处理?

1 个答案:

答案 0 :(得分:3)

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

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

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