我在spring security+spring session使用redis,序列化方式是GenericJackson2JsonRedisSerializer,但是spring security在认证成功之后会保存一个SecurityContextImpl到redis,这个类是有无参构造的,但是这个类下面有一个UsernamePasswordAuthenticationToken类没有无参构造,造成反序列化失败,认证就失败了,没有找到解决办法,总不能重新打包spring的jar包,也没办法自定义反序列化方式,改成jdk序列化太占空间,又不想改成fastjson,bug太多,不想一个项目中依赖两个json工具,前辈们有什么办法吗??
用jwt认证,就不用烦恼序列化存储了。
我是jwt认证的,jwt+spring security+spring session使用redis,jwt不需要缓存,spring security自动保存了一个SecurityContextImpl,前辈的意思是我写的某个实现类错了,应该不需要这个保存吗?
关注一下,也遇到这个问题了
相同问题,后来怎么处理的
还是改回了JDK序列化,或者可以试试自定义jackson序列化该类的方式。或者绕一下,缓存查询结果即可,不用缓存那个实现类了。
@ZJef: 官方给了security和jackson 的集成,对很多没有无参构造的 写了好多 Mixin 模式的自定义类 WebServletJackson2Module,WebJackson2Module 在ObjectMapper 里面添加一下 就可以了。搞死我了。没有的话可以自己实现也是很方便的,大部分都有实现。