假设我们有短期访问令牌(15 分钟)和长期刷新令牌(7 天)。
我们什么时候应该要求后端刷新访问令牌?
我看到两个选项:
在第一个选项中,我看到了一个优势 - 如果访问令牌和刷新令牌将过期并且用户停留在页面上,没有采取任何行动,他也不会发送任何 http 请求,因为计时器仍然有效并且用户会自动注销。
在第二个选项中 - 如果访问令牌和刷新令牌将过期,则仅当用户在页面上执行某些操作时才会注销,例如:离开页面或发出 http 请求。 如果他留在页面上,他将不会自动退出。
有什么比前端更好的实现方式?
答案 0 :(得分:0)
我会推荐选项 2 作为您的默认行为,因为它将为您提供一个有弹性的应用程序。每个 OAuth 客户端都应执行此操作,因为在某些设置(例如令牌签名证书续订)中,有时也会因基础架构原因收到 401。
选项 1 是一种优化,如果您想减少来自 API 的 401 响应。但是,如果您不小心,它可能会导致错误地开发客户端和 API。我个人从不使用它。
请注意,访问令牌会返回 expires_in 字段,但刷新令牌没有等效字段,因此除非您开发自定义解决方案,否则客户端无法检测用户会话何时到期。
在对 API 调用进行编码时,建议这样做,如 this sample code of mine:
出于兴趣,有一个上述应用程序的在线版本,可让您测试 OAuth 到期事件以查看其行为 - 请参阅我的 Quick Start 页面