求助!shiro会话超时时间设置失效

成潇潇 2018-08-15 03:22:23
项目框架是ssm结合shiro。最近想改下会话时间,shiro默认的是半小时。按照网上说的方法有两种方式修改,我都试过但没有效果,不知道是什么原因。
贴出我的配置文件
 <!-- 会话管理器 -->
<bean id="sessionManager" class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager">
<property name="globalSessionTimeout" value="3600000"/><!-- session的失效时长,单位毫秒 1小时: 3600000 --><!-- 设置全局会话超时时间,默认30分钟,即如果30分钟内没有访问会话将过期 1800000 -->
<property name="deleteInvalidSessions" value="true"/><!-- 删除失效的session -->
<property name="sessionValidationSchedulerEnabled" value="true"/> <!-- 是否开启会话验证器,默认是开启的 -->
<property name="sessionValidationScheduler" ref="sessionValidationScheduler"/>
<property name="sessionDAO" ref="sessionDAO"/> <!-- Shiro提供SessionDAO用于会话的CRUD -->
<property name="sessionIdCookieEnabled" value="true"/><!--是否启用/禁用Session Id Cookie,默认是启用的;如果禁用后将不会设置Session Id Cookie,即默认使用了Servlet容器的JSESSIONID,且通过URL重写(URL中的“;JSESSIONID=id”部分)保存Session Id-->
<property name="sessionIdCookie" ref="sessionIdCookie"/>
</bean>
...全文
639 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
BUG胡汉三 2018-08-15
还有就是web.xml的session过期时间也要设置跟shiro一样,如果你使用的tomcat那么tomcat默认的过期时间就是30分钟。你必须在tomcat或者你自己工程的web.xml文件中加上:

<session-config>
<session-timeout>15</session-timeout>
</session-config>
回复
BUG胡汉三 2018-08-15
如果你有定时器(并且一直在执行)这样就不会失效了,因为session一直跟后台有交互,会刷新存活时间的!
-------------------------------------------------
session失效不一定是过期了,而是有可能你的sessionID被换掉了,如果这种失效很频繁的话你可以试试打印sessionID,看看失效的sessionID是不是登录时的那一个!造成这种原因(不是因为时间过期而失效的session)是因为用到了iframe,在一些浏览器中使用iframe会造成sessionID会被重新创建,特别是使用了session共享后!!!
回复
成潇潇 2018-08-15
但也是我最近才加的,影响也不大把。主要是系统马上要上线了,会话失效的问题一直没解决,有时候在操作,都会让你重新登陆
回复
成潇潇 2018-08-15
有个用来刷新左侧菜单待处理事件的定时器
回复
成潇潇 2018-08-15
有,但这个有影响吗?
回复
成潇潇 2018-08-15
对,设置没用。但我试过1s,10s是有效的
回复
BUG胡汉三 2018-08-15
你页面是有什么定时器吗?JS几十秒请求一次后台。。。刷新列表啥的!
回复
BUG胡汉三 2018-08-15
在登录的时候代码设置也不行吗?

SecurityUtils.getSubject().getSession().setTimeout(1000*60*30);
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2018-08-15 03:22
社区公告
暂无公告