项目中使用了spring oauth2作为接口的权限认证,由于是集群环境,使用了redis存储token信息。一开始使用并没有注意,再后来app在使用的过程中,用户一直操作着,会突然中断跳到登录页,这种体验是很不友好的。问了下客户端的小伙伴,在token过期时,并没有调用刷新token的接口。好吧~那就接口来处理吧。
首先确定的时token的存储和读取都没有问题,就是每次请求后,token 的过期时间没有更新,才会导致token过期操作中断。所以我们要做的就是在每次正常请求接口后,更新token的过期时间。
看了下RedisTokenStore的源码
再看下readAuthentication(OAuth2AccessToken token)方法,只是读取了token之后就返回了,并没有更新的操作
因此,在readAuthentication(OAuth2AccessToken token)方法上改造,其他方法原样照抄RedisTokenStore就行
改造后的结果如下
这样就算改造完成了。
然后在自己的AuthorizationServer 中注入自己改造的redistokenStore,类似这种
然后再配置token的存储方式的时候,使用自己改造的redisTokenStore,如下
这样redis token续签的功能就实现了。
来源:oschina
链接:https://my.oschina.net/ye39zi/blog/3211751