使用nginx+tomcat做集群时,如何同步shiro的session,保证可以完成正常的权限认证

刘朕 发布于 2017/03/01 12:40
阅读 1K+
收藏 0

各位好:

        请教个问题,我的项目中使用了shiro做权限控制,在单机的情况下没问题,但是使用nginx+tomcat 做集群时,集群使用redis做了tomcat的session共享,验证的时候回出现问题,多次请求时,要求重新登录,自己怀疑应该是shiro的session为同步问题。主要有以下两个疑问:

       1、shiro的seesion不同tomcat的session一起实现session共享吗?

       2、如果shiro的seesion不能同tomcat一起完成session的共享,那么要如何实现,才能保证tomcat在集群的情况下,保证shiro的权限验证也没问题。

小弟,先谢谢大家了

加载中
0
金龙
金龙

shiro的session来源不是redis,shiro的session应该在某处设置,然后校验是否登录时,拿来用,设置的那块代码应该要自己重写吧

0
红魔小贝
红魔小贝

看shiro源码是代理的Servlet组件的session,所以你只需要实现servlet的session共享就可以,跟shiro没啥关系。

红魔小贝
红魔小贝
回复 @刘朕 : 你那问题解决了吗?使用redis在web容器层面共享session就可以。 你那个问题首先看看登录之后redis有没有会话信息,看看有没有过期时间。可能是过期时间太短失效了
刘朕
试了下,使用tomcat的session是可以的,谢谢
0
赵传喜
赵传喜

按你的意思,应该是做一个shiro的sessionManager,把shiro的session放到redis中,你可以看一下是否实现这个情况,可以参考一个网站:https://www.oschina.net/p/shiro-demo?fromerr=Ax65RmTd  

刘朕
非常有用,谢谢
0
yuyuyuyu
yuyuyuyu
更简单的是绑定ip不要变,
0
520beibei
520beibei
shiro 可以设置两种不同的session 。
返回顶部
顶部