【发布时间】:2016-01-21 17:50:04
【问题描述】:
我已经在我的 webapp 中使用 Spring 配置了 Shiro 全局超时,所以如果我的网页(客户端)在过去 30 分钟内(仅实例)没有任何请求,客户端的会话将超时并页面重定向到登录页面。这已经可以了。我的问题如下:
网页在后台有一个ajax请求,它会以设定的时间间隔向服务器请求。而且每次请求都会清除Shiro中会话的超时计数器,所以客户端会话永远不会超时!
是否可以配置Shiro使某些特定的url不清除或刷新会话超时???
很难为问题命名,搜索也是如此。但我想总有一些人有同样的要求!任何人有任何想法,请告诉我。非常感谢~
我的部分配置如下,
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
<property name="filters">
<map>
<entry key="ssl" value-ref="sslFilter"/>
<entry key="login" value-ref="userLoginFilter"/>
<entry key="nosessi" value-ref="unSessionFilter"/>
</map>
</property>
<property name="securityManager" ref="securityManager"/>
<property name="filterChainDefinitions">
<value>
/alarms/current-alarm-states = nosessi
/js/** = anon
/css/** = anon
/images/** = anon
/login = anon,ssl
/login/** = anon,ssl
/** = login,ssl
</value>
</property>
</bean>
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<property name="realms">
<list>
<ref bean="userRealm"/>
</list>
</property>
<property name="sessionManager" ref="sessionManager"/>
</bean>
<bean id="sessionManager" class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager">
<property name="sessionListeners">
<list>
<ref bean="sessionListener"/>
<ref bean="tsSessionListener"/>
</list>
</property>
<!-- 3 minutes: 180000 -->
<property name="globalSessionTimeout" value="180000"/>
<property name="sessionIdCookie.name" value="MY_SESSIONID"/>
</bean>
【问题讨论】:
标签: spring-mvc session shiro