我有一个 Api 和一个移动客户端。我使用刷新令牌如下:
问题:假设用户有 2 个设备,A 和 B。他使用设备 A 成功登录,因此他获得了 2 个令牌,他很高兴。一旦用户从设备 B 登录,Api 就会向他发送一对新的令牌,这意味着新的刷新令牌将覆盖设备 A 已经给定的令牌。现在用户返回设备 A aaa,它就消失了(无效刷新)令牌!)所以他必须再次提供凭据,而我、用户和您都不希望这样做。
建议:我找到了两种解决问题的方法,但因为我对这个主题还很陌生,所以我看不出哪种方法是最佳实践:
方法 A:为每个用户保存多个刷新令牌,并保存设备标识符(仍然不知道在移动、浏览器和桌面客户端等不同客户端类型的情况下究竟会发生什么!)但无论如何。在此方法中,当用户从设备 A 登录时,Api 会提供两个令牌。用户从设备 B 登录,Api 会传递新的令牌对。他返回设备 A,再次使用他的第一个令牌(仍然有效)。
方法 B:为每个用户保留 1 个刷新令牌。当用户从设备 B 登录时,Api 发回唯一的刷新令牌(只要用户提供有效的凭据,我就不应该关心设备,对吧?)
您能指出每种方法的优缺点吗?
Eve*_*ert 15
方法 A 是处理此问题的正常方法。访问/刷新令牌不应在不同的会话/设备之间共享。
每个人都应该得到自己的一双。当您使用该refresh_token操作时,它应该仅使与该请求一起使用的刷新令牌过期,而不是任何不相关的令牌。
| 归档时间: |
|
| 查看次数: |
7571 次 |
| 最近记录: |