遇到问题----shrio------shiro登录,多个项目session被覆盖问题---两个web项目会导致shiro的session污染
2017-03-08 20:22
1281 查看
情况
遇到问题----shrio------shiro登录,多个项目session被覆盖问题---一个项目两个web模块会导致shiro的session污染表现为 我在同一台机子上部署了两个都使用了shiro管理的web项目。
它们的访问路径除了端口不一样,ip是一样的。
当两个系统同时访问时,在一个系统中操作之后另一个系统就会自动退出登录。
但是 如果用域名访问就不会出现这个问题。
原因
web项目的session管理 cookie的名称冲突,两个web项目用了同样的cookie名一样导致的。解决方法
修改设置cookie名称即可。这个根据我们自己对项目的了解 cookie是在哪个地方设置的名称,一般有几个地方。
web.xml
一个是web.xml中<session-config>
<cookie-config>
<name>_crmid</name>
</cookie-config>
<tracking-mode>COOKIE</tracking-mode>
</session-config>
name这里设置成不一样的即可。
shiro.xml
shiro中可以设置sessionIdCookie.name<!-- 会话Cookie模板 -->
<bean id="sessionIdCookie" class="org.apache.shiro.web.servlet.SimpleCookie">
<constructor-arg value="sid"/>
**<!--设置Cookie名字,默认为JSESSIONID-->
<property name="name" value="WEBSID" />**
</bean>
2个web模块,分别设置不同的sessionIdCookie的name即可。
还有另外一种是这样设置
<bean id="shiroSessionManager" class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager">
<property name="sessionDAO" ref="sessionDAO"/>
<property name="sessionValidationInterval" value="1800000"/> <!-- 相隔多久检查一次session的有效性 -->
<property name="globalSessionTimeout" value="1800000"/> <!-- session 有效时间为半小时 (毫秒单位)-->
<property name="sessionIdCookie.domain" value=".xxx.com"/>
<property name="sessionIdCookie.name" value="jsid"/>
<property name="sessionIdCookie.path" value="/"/>
<!-- 会话DAO -->
<bean id="sessionDAO" class="org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO">
<!-- 设置Session缓存名字,默认就是shiro-activeSessionCache,要和ehcache.xml中的那么对应 -->
<property name="activeSessionsCacheName" value="shiro-activeSessionCache"/>
<property name="sessionIdGenerator" ref="sessionIdGenerator"/>
</bean>
<!-- 会话ID生成器,用于生成会话ID,默认就是JavaUuidSessionIdGenerator,使用java.util.UUID生成-->
<bean id="sessionIdGenerator" class="org.apache.shiro.session.mgt.eis.JavaUuidSessionIdGenerator"/>
tomcat
最后tomcat的设置也有可能tomcat下的server.xml中添加sessionCookieName,A项目设置为A_SESSION,B项目设置为B_SESSION。
<Context path="" docBase="webapp" debug="0" reloadable="false" sessionCookiePath="/" sessionCookieName="A_SESSION"/>
相关文章推荐
- shiro登录,多个项目session被覆盖问题
- 关于两个用户用同一浏览器不能同时登录同一网站的问题(session覆盖问题)
- weblogic下部署项目遇到session被覆盖问题
- Xfire集成到web 项目中遇到的问题 及解决方法
- JAVA WEB START 在项目中遇到的问题及解决
- web项目复制遇到的一个问题
- Adobe after MAX北京站 & 项目中遇到的session、消息推送问题。
- 在VS.NET 2003中建立项目时遇到的两个问题及解决方法
- 2013-5-25 1. “已有打开的与此命令相关联的 DataReader,必须首先将它关闭。"问题. 上周在项目开发中,遇到这样的一个问题,在前台展示页,两个WebPart调用后台的AP
- 在VS.NET 2003中建立项目时遇到的两个问题及解决方法 (转贴)
- VS2005创建Web项目时遇到的问题及解决办法
- 项目中遇到关于OpenSessionInViewFilter的默认sessionFactoryBeanName的问题
- MyEclipse中用Tomcat部署项目时遇到的问题2:Document base D:/Tomcat 5.5/server/webapps/ admin does not exist or is not a readable directory
- 2013-5-25 1. “已有打开的与此命令相关联的 DataReader,必须首先将它关闭。"问题. 上周在项目开发中,遇到这样的一个问题,在前台展示页,两个WebPart调用后台的AP
- 当session长时间不登录失效问题,再重登录出现两个嵌套登录页面
- 在类库中添加引用System.Web.SessionState 命名空间中遇到的问题(已解决)
- 项目遇到OpenSessionInViewFilter的默认sessionFactoryBeanName的问题
- JAVA项目直接触之新手遇到的问题:引入web project运行tomcat后,出现:严重: Error listenerStart
- 通过SVN导入两个项目(从java移植到andorid)时,一个android,一个普通java项目时可能遇到的两个问题
- 2013-5-25 1. “已有打开的与此命令相关联的 DataReader,必须首先将它关闭。"问题. 上周在项目开发中,遇到这样的一个问题,在前台展示页,两个WebPart调用后台的AP