spring session 与shiro session 的使用问题。

哒哒哒不嗒啦 发布于 2018/04/01 12:13
阅读 3K+
收藏 6

我的项目框架是SSM+shiro,用shiro来做认证,授权。

起初我有配置shrio 的session管理器来管理session,后面因要配置spring session+redis来管理会话,就把shiro的session管理给去掉了,因为同时配置的话 应用会优先使用shiro来管理session,数据无法缓存到redis当中。

现在的问题是,使用spring session+redis的话,那么User 就必须要实现Serializable序列化,因为redis无法存储对象。

然后就出现各种问题,比如:

我使用 hibernate-validator 对User进行正则校验,当使用shiro管理session时(User也实现了Serializable)没任何问题,换成spring-session时 正则就不通过(不能输入汉字),貌似跟实现Serializable 又没什么关系;

再如:

以上的代码运行结果:不合法;

我拿变量userId 替换后运行结果为:合法。

User 都是通过:User user =(User) SecurityUtils.getSubject().getPrincipal();来获取的当前用户(两次为同一用户);

调试的结果是:两个值都为1;

对了,product也实现了Serializable;

请大神赐教,谢谢。

还有我想问下通过spring session+redis缓存对象数据:

1.把对象转换成JSON字符串存入redis,取值时在反序列化为对象;

2.实现Serializable直接存对象;

哪种方式更为妥当。

加载中
0
不愿透露姓名的Mr成
不愿透露姓名的Mr成
用spring session自定义序列化试试
0
sanyecao2314
sanyecao2314

起初我有配置shrio 的session管理器来管理session,后面因要配置spring session+redis来管理会话.

--这里不明白为什么要换成spring session?shiro里有个cacheManager.你把这个换成redis,使用shiro自身的session管理就可以的啊

0
kakai
kakai
既然把系统session托管给了Shrio,那么就应该坚持用到底,你不觉得你那么用很混乱吗?Shiro可以把session缓存到redis的机制。
kakai
kakai
具体为SessionDAO,可以直接继承CachingSessionDAO实现
0
milin
milin
shiro保存会话到redis中,和使用spring不是一个道理么,为什么要改呢?
返回顶部
顶部