Roc*_*582 7 security authentication access-token jwt refresh-token
假设我们有短期访问令牌(15 分钟)和长期刷新令牌(7 天)。
我们什么时候应该要求后端刷新访问令牌?
我看到两个选择:
在第一个选项中,我看到一个优点 - 如果访问令牌和刷新令牌将过期并且用户停留在页面上,不采取任何操作,他也不会发送任何 http 请求,而不是计时器仍然有效并且用户会自动注销。
在第二个选项中 - 如果访问令牌和刷新令牌将过期,则仅当用户在页面上执行某些操作时才会注销,例如:离开页面或发出 http 请求。如果他留在页面上,他就不会自动退出。
有什么比前端更好的实现呢?
我建议您将选项 2 作为默认行为,因为它会给您一个有弹性的应用程序。每个 OAuth 客户端都应该这样做,因为在某些设置中,有时也会因基础设施原因(例如令牌签名证书续订)而收到 401。
如果您想减少 API 的 401 响应,选项 1 是一种优化。但是,如果您不小心,可能会导致客户端和 API 开发不正确。我个人从不使用它。
请注意,expires_in 字段随访问令牌返回,但刷新令牌没有等效字段,因此客户端无法检测用户会话何时过期,除非您开发自定义解决方案。
在编码 API 调用时,建议这样做,如我的示例代码所示:
出于兴趣,上述应用程序有一个在线版本,允许您测试 OAuth 到期事件以了解其行为 - 请参阅我的快速入门页面