记录Token反序列化OAuth2Authentication(主要是直接存储用户信息的UserDetails )
项目场景:
本地开发环境部署了多套系统,并且使用了同一套登入鉴权组件,存入的TokenStore也是相同的Redis库;
问题描述&原因分析
由于是做的不同项目,group等组织机构不同,导致多系统若是有存储相同用户名到Redis库中,会在反序列化OAuth2Authentication的时候由于全局限定名不一致,但是用户名又相同,UserDetails实际就这个存储用户信息的类,会反序列化失败,导致登入报错。
解决方案:
将每个系统中存储RedisTokenStore中增加前缀,代码如下
public OAuth2AuthorizationConfig(RedisConnectionFactory redisConnectionFactory) {RedisTokenStore redisTokenStore = new RedisTokenStore(redisConnectionFactory);redisTokenStore.setPrefix("PREFIX:SYSTEM:SECURITY:TOKEN");tokenStore = redisTokenStore;}
总结
这样就可以区分开了,互不干扰。