使用一个令牌管理登陆认证,如果 A 设备登陆了系统,rt的有效时间是 12 个小时,在使用 B 设备登陆系统(at 的唯一性我会使用设备码进行判断是否要刷新 at)。
此时会有一个问题,rt的有效时间怎么处理?
- 如果我不刷新时间,也许 B 设备在 rt 有效时间快要结束时才登陆,一小段时间后会导致又要登陆一次。
- 如果刷新了时间,那在 A 设备看来 rt 的有效时间就不是 12 个小时了,12 个小时后它还是可以登陆。
- 如果一个账户可以生成多个令牌,为每一个设备对应一个令牌,这种方案怎么样?
使用一个令牌管理登陆认证,如果 A 设备登陆了系统,rt的有效时间是 12 个小时,在使用 B 设备登陆系统(at 的唯一性我会使用设备码进行判断是否要刷新 at)。
此时会有一个问题,rt的有效时间怎么处理?
你的问题就在于没理解 refresh_token 到底刷新的是谁,它刷新的是 access_token 才对,且刷新的时候根本不会 care 有没有同一个用户持有另一个 access_token。
也就是说,refresh_token 是跟 access_token 成对的,而不是跟用户匹配的。
每个用户,可以有多对 access_token 和 refresh_token 同时生效(也就是你的第三小点)。
如果真的想让前面的某对 access_token / refresh_token 失效,也是另有逻辑去处理,而不是直接简单粗暴的认为一个用户只会有一对 access_token / refresh_token。