我们什么时候应该在前端刷新访问令牌?

问题描述 投票:0回答:1

假设我们有 短期访问令牌(15 分钟)和 长期刷新令牌(7 天)。

我们什么时候应该要求后端刷新访问令牌?

我看到两个选项:

  1. 用户登录后,我们开始倒计时,在访问令牌过期之前自动刷新令牌一分钟
  2. 我们不实现计时器,并且仅当我们从后端收到 401 响应时才尝试刷新访问令牌。

在第一个选项中,我看到了一个优点 - 如果访问令牌和刷新令牌将过期并且用户停留在页面上,不采取任何操作,他也不会发送任何http请求,而不是计时器仍然有效并且用户会自动注销。

在第二个选项中 - 如果访问令牌和刷新令牌过期,则仅当用户在页面上执行某些操作时才会被注销,例如:离开页面或发出 http 请求。 如果他留在页面上,他将不会自动退出。

还有什么比前端更好的实现呢?

security authentication jwt access-token refresh-token
1个回答
7
投票

我会推荐选项 2 作为您的默认行为,因为它会给您一个有弹性的应用程序。每个 OAuth 客户端都应该这样做,因为在某些设置中,由于基础设施原因有时也会收到 401,例如令牌签名证书续订。

如果您想减少 API 的 401 响应,选项 1 是一种优化。但是,如果您不小心,可能会导致客户端和 API 开发不正确。我个人从来不使用它。

请注意,expires_in 字段随访问令牌一起返回,但刷新令牌没有等效字段,因此客户端无法检测用户会话何时过期,除非您开发自定义解决方案。

在编码API调用时,建议这样做,如我的示例代码

  • 收到 401 时尝试令牌刷新
  • 成功后重试 API 调用 - 仅一次
  • 失败时重定向用户以再次进行身份验证

出于兴趣,上述应用程序有一个在线版本,允许您测试 OAuth 到期事件以了解其行为 - 请参阅我的 快速入门 页面

© www.soinside.com 2019 - 2024. All rights reserved.