org.springframework.data.redis.serializer.SerializationException: Cannot deserialize; nested exception is org.springframework.core.serializer.support.SerializationFailedException: Failed to deserialize payload. Is the byte array a result of corresponding serialization for DefaultDeserializer?; nested exception is java.io.InvalidClassException: org.springframework.security.core.authority.SimpleGrantedAuthority; local class incompatible: stream classdesc serialVersionUID = 420, local class serialVersionUID = 510
造成问题的原因:
这个问题是由于spring-security-core版本升级造成的,项目使用springboot oauth2
老版本boot使用1.5,oauth是和boot对应的版本,生成的token信息存储在Redis中。当我boot升级为2.x的时候就报了上面的错误。
原因是之前的token中user对象的序列serialVersionUID = 420,在升级的版本中从token反序列化user时序列号对不上了。
处理办法:
将之前Redis中存储的信息清空一下,
进入redis目录下
redis-cli -h IP -p 端口 -a 密码
flushall