shiro session 监听

简介: spring 使用 shiro 后,由于shiro重新封装了原有的session,所以不能再使用原来的session监听方法了 (1)在shiro配额只文件中设置监听类 <!-- shiroSessionListener  监听类--> <bean id="shiroSessionListener" class="com.listener.ShiroSessio

spring 使用 shiro 后,由于shiro重新封装了原有的session,所以不能再使用原来的session监听方法了

(1)在shiro配额只文件中设置监听类

	<!-- shiroSessionListener  监听类-->
	<bean id="shiroSessionListener" class="com.listener.ShiroSessionListener"></bean>
	
	<!-- 自定义会话管理配置 -->
	<bean id="sessionManager" class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager"> 
		<property name="sessionDAO" ref="sessionDAO"/>
		
		<!-- 会话超时时间,单位:毫秒  -->
		<property name="globalSessionTimeout" value="${session.sessionTimeout}"/>
		 <property name ="sessionListeners"> 
                <list> 
                   <ref bean="shiroSessionListener"/>
                </list>  
             </property>
		<!-- 定时清理失效会话, 清理用户直接关闭浏览器造成的孤立会话   -->
		<property name="sessionValidationInterval" value="${session.sessionTimeoutClean}"/>
<!--  		<property name="sessionValidationSchedulerEnabled" value="false"/> -->
 		<property name="sessionValidationSchedulerEnabled" value="true"/>
 		
		<property name="sessionIdCookie" ref="sessionIdCookie"/>
		<property name="sessionIdCookieEnabled" value="true"/>
	</bean>

(2)监听类

import org.apache.shiro.session.Session;
import org.apache.shiro.session.SessionListenerAdapter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


public class ShiroSessionListener extends SessionListenerAdapter {
	Logger logger=LoggerFactory.getLogger(ShiroSessionListener.class);
	 @Override  
	    public void onStart(Session session) {//会话创建时触发  
	        logger.debug("会话创建:" + session.getId());  

	    }  
	    @Override  
	    public void onExpiration(Session session) {//会话过期时触发  
	    	logger.debug("会话过期:" + session.getId());  
	    	
	    }  
	    @Override  
	    public void onStop(Session session) {//退出时触发  
	    	logger.info("会话停止:" + session.getId());  
	    }    
}  


目录
相关文章
|
4月前
|
存储 NoSQL Redis
spring-session-core排除某些接口不设置session
spring-session-core排除某些接口不设置session
100 0
|
4月前
|
XML 缓存 Java
Shiro - 会话管理与SessionDao持久化Session
Shiro提供了完整的企业级会话管理功能,不依赖于底层容器(如web容器tomcat),不管JavaSE还是JavaEE环境都可以使用,提供了会话管理、会话事件监听、会话存储/持久化、容器无关的集群、失效/过期支持、对Web 的透明支持、SSO 单点登录的支持等特性。
149 0
|
安全
【Shiro】2、Shiro实现Session会话过期时间控制
一般我们的 session 会话过期时间默认为 30 分钟,有的用户认为 30 分钟太短了,有时候临时有事出去了,回来已经过期了,工作还没完成就只能登出了,非常不方便,于是要求我们改变 session 的过期时间
852 0
|
安全 Java 数据安全/隐私保护
SpringSecurity-10-Session会话管理
SpringSecurity-10-Session会话管理
114 0
|
存储 前端开发
Servlet【 ServletAPI中的会话管理Cookie与Session】
Servlet【 ServletAPI中的会话管理Cookie与Session】
Servlet【 ServletAPI中的会话管理Cookie与Session】
|
应用服务中间件 容器
Shiro配置cookie以及共享Session和Session失效问题
Shiro配置cookie以及共享Session和Session失效问题
400 1
|
前端开发 Java API
Session和EL表达式实现登陆验证
现在多系统的登陆都采用单点登陆了,emmmm......后期再更单点登陆的,这次由于只是个小demo,所以我们采用Session和EL表达式实现登陆验证。
1443 0
|
Java 数据库连接
|
Dubbo Java 应用服务中间件