1. 前言
最近在搞一个鉴权认证服务器,其中有个问题就是token的无感刷新。Token无感刷新是一种在用户不感知的情况下自动更新访问令牌(Token)的机制,以维持用户的登录状态。
一般是使用一个短期的token来做权限认证,而更长时间的refreshToken
来做短token的刷新,而在实现的过程中就有各种问题出来比如:
-
Q1: 是要在服务器端实现还是能在客户端实现?
-
Q2: token过期后无法解析,怎么获取到其中的过期时间?
-
Q3: 无感刷新即是需要在获取到新token后重发原来的request请求,并将二次请求的结果返回给原调用者,如何实现?
下面我就对上面这些问题给出我自己的拙见,希望能对读者有所帮助😁
2. 客户端实现
2.1 初始版本
想法:每次客户端发起的请求会被服务器端gateway拦截,此时在gateway中判断token是否无效(过期):
-
过期则返回一个特定的状态码(可以自定义也可以用HTTPStatus)告诉客户端当前token失效
-
没过期则放行,继续原本的业务逻辑