shiro使用redis作为缓存,出现要清除缓存时报错 java.lang.Exception: Failed to deserialize at org.crazycake.shiro.SerializeUtils.deserialize(SerializeUtils.java:41) ~[shiro-redis-2.4.2.1-RELEASE.jar:na]

时间:2021-07-30 13:31:08

shiro使用redis作为缓存,出现要清除缓存时报错

java.lang.Exception: Failed to deserialize
at org.crazycake.shiro.SerializeUtils.deserialize(SerializeUtils.java:41) ~[shiro-redis-2.4.2.1-RELEASE.jar:na]
at org.crazycake.shiro.RedisSessionDAO.getActiveSessions(RedisSessionDAO.java:66) [shiro-redis-2.4.2.1-RELEASE.jar:na]

shiro使用redis作为缓存,出现要清除缓存时报错 java.lang.Exception: Failed to deserialize 	at org.crazycake.shiro.SerializeUtils.deserialize(SerializeUtils.java:41) ~[shiro-redis-2.4.2.1-RELEASE.jar:na]

因为使用的是

<groupId>org.crazycake</groupId>
<artifactId>shiro-redis</artifactId>
<version>2.4.2.1-RELEASE</version>
所以在获取所有的session中的key来反序列化时出现不能反序列化。

看了了下源码

shiro使用redis作为缓存,出现要清除缓存时报错 java.lang.Exception: Failed to deserialize 	at org.crazycake.shiro.SerializeUtils.deserialize(SerializeUtils.java:41) ~[shiro-redis-2.4.2.1-RELEASE.jar:na]

shiro使用redis作为缓存,出现要清除缓存时报错 java.lang.Exception: Failed to deserialize 	at org.crazycake.shiro.SerializeUtils.deserialize(SerializeUtils.java:41) ~[shiro-redis-2.4.2.1-RELEASE.jar:na]

然后各种问题搜索,定义问题的出错在哪,最后发现是使用的

<groupId>org.crazycake</groupId>
<artifactId>shiro-redis</artifactId>
<version>2.4.2.1-RELEASE</version>

版本有的漏洞,但是在2.4.6版本的已经修复了这个bug

2.4.6 解决了序列化的问题,请升级至2.4.6。而且被序列化的对象必须实现 java.io.Serializable 接口