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());  
	    }    
}  


目录
相关文章
|
13天前
|
存储 缓存 搜索推荐
session 详解:掌握客户端会话管理
session 详解:掌握客户端会话管理
|
14天前
|
XML 缓存 Java
Shiro - 会话管理与SessionDao持久化Session
Shiro提供了完整的企业级会话管理功能,不依赖于底层容器(如web容器tomcat),不管JavaSE还是JavaEE环境都可以使用,提供了会话管理、会话事件监听、会话存储/持久化、容器无关的集群、失效/过期支持、对Web 的透明支持、SSO 单点登录的支持等特性。
73 0
|
9月前
|
安全 Java 数据安全/隐私保护
SpringSecurity-10-Session会话管理
SpringSecurity-10-Session会话管理
83 0
|
安全
【Shiro】2、Shiro实现Session会话过期时间控制
一般我们的 session 会话过期时间默认为 30 分钟,有的用户认为 30 分钟太短了,有时候临时有事出去了,回来已经过期了,工作还没完成就只能登出了,非常不方便,于是要求我们改变 session 的过期时间
737 0
|
存储 NoSQL Java
Spring Session - Cookie VS Session VS Token 以及 Session不一致问题的N种解决方案
Spring Session - Cookie VS Session VS Token 以及 Session不一致问题的N种解决方案
127 0
|
存储 前端开发
Servlet【 ServletAPI中的会话管理Cookie与Session】
Servlet【 ServletAPI中的会话管理Cookie与Session】
Servlet【 ServletAPI中的会话管理Cookie与Session】
|
应用服务中间件 容器
Shiro配置cookie以及共享Session和Session失效问题
Shiro配置cookie以及共享Session和Session失效问题
354 1
|
缓存 NoSQL 前端开发
Shiro - Spring + Jedis(会话、缓存、自动登录)整合篇(下)
Shiro - Spring + Jedis(会话、缓存、自动登录)整合篇(下)
168 0
Shiro - Spring + Jedis(会话、缓存、自动登录)整合篇(下)
|
XML 存储 缓存
Shiro - Spring + Jedis(会话、缓存、自动登录)整合篇(上)
Shiro - Spring + Jedis(会话、缓存、自动登录)整合篇(上)
231 0
Shiro - Spring + Jedis(会话、缓存、自动登录)整合篇(上)
4.会话管理(Session)
1.会话管理的概念和基本原理:             会话管理概念:                            会话的实现过程:               2.使用Cookie、隐藏域、URL重写实现会话管理      创建并向客户端发送Cookie;     从客户端读取Coo...
1402 0