【问题标题】:Should refreshing a JWT be the responsibility of the API or the client?刷新 JWT 应该是 API 还是客户端的责任?
【发布时间】:2017-04-17 20:10:07
【问题描述】:

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

  1. 在 API 中接收令牌时,如果它已过期但我们在刷新 ttl 内,则刷新该令牌,继续正常请求并在标头中返回新令牌
  2. 在客户端中,当返回带有过期代码的 401 响应时,使用旧令牌向 API 端点发出请求,刷新 API 并返回新令牌,然后重放任何待处理的 API 请求。

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

【问题讨论】:

    标签: php authentication jwt


    【解决方案1】:
    1. 在 API 中接收令牌时,如果它已过期但我们在刷新 ttl 内,则刷新该令牌,继续正常请求并在标头中返回新令牌

    第一个比第二个更有意义和更容易,因为如果令牌已过期,您不必存储请求,并且您不必等待 401 响应来重播那些未到期的 API 请求适合用户体验。

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

    【讨论】:

    • 我想这就是我要使用的 - 将令牌设置为一个小时,但每 30 分钟或在页面刷新时尝试在幕后刷新令牌
    猜你喜欢
    • 2019-01-30
    • 2012-06-12
    • 2015-06-23
    • 2012-09-22
    • 2012-04-19
    • 2020-09-04
    • 2019-02-06
    • 2018-04-04
    • 2011-12-06
    相关资源
    最近更新 更多