🎨结论
- 什么时候需要用户重新登录?
token过期了就让用户重新登录吗?显然不是的,如果是不活跃用户的token过期了,确实需要跳转到登录页面重新登录。但是如果是活跃用户,就算token过期了,也不应该重新登陆,而是应该给token重新续签。
- 那么什么样的用户才算活跃用户?
若accessToken有效时长et,活跃用户时长at,那么就有 at>=et(为什么?先留在这),且每次正常操作客户端后用户活跃时间应刷新(即用户一次正常操作客户端后的at时间内都是活跃的),所以可以认为[accessToken创建开始时间点,2*et]时间内的用户是活跃的。
- accessToken用于业务系统交互,时效较短,refreshToken用于accssToken过期之后,重新获取新的accssToken,如果都过期了,就需要用户重新登录。
- accessToken和refreshToken的有效时间怎么设置?
为了能够保证刷新活跃用户的accessToken,refreshToken的有效时间不能小于用户活跃时间点,假设 accessToken有效时间是et,那么用户在[accessToken创建开始时间点,2et]时间内都是活跃的,由此可知refreshToken的有效时间>=2et。
比如 accessToken时效是7天,那么refreshToke时效可以给15天,也可以给30天。当然,accessToken和refreshToken的时长具体是多少,需要根据环境决定,如涉及到金钱的银行客户端,12306客户端等token时长都很短,而普通app客户端的token可以是几天甚至上月。
- refreshToken什么时候刷新?
每次刷新accessToken的时候判断refreshToken是否快过期(refreshToken剩余有效时间 <= 2*et),如果是,那就连refreshToken一起刷新。如果想降低refreshToken的频率,可以将refreshToken的时效提高。