shiro session 监听

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());
	    }
}
时间: 2024-12-05 01:34:32

shiro session 监听的相关文章

使用xmlhttp和Java session监听改善站内消息系统

session|xml 使用xmlhttp和Java session监听改善站内消息系统 bromon 原创  引自:http://www.javaresearch.org/article/showarticle.jsp?column=106&thread=25340 这个题目含有许多需要解释的概念,最容易说明的是"站内消息",这是很多论坛都有的功能,可以通过web向其他的在线用户发送消息,很多用户都使用过.站内消息的第一个好处是大家都不需要安装客户端,你不用知道对方的MSN或

xmlhttp和Java session监听改善消息系统

session|xml 这个题目含有许多需要解释的概念,最容易说明的是"站内消息",这是很多论坛都有的功能,可以通过web向其他的在线用户发送消息,很多用户都使用过.站内消息的第一个好处是大家都不需要安装客户端,你不用知道对方的MSN或者QQ,就能与他联系,称赞他的观点或者是给他一顿臭骂. 第二个好处是客户管理方便,利用session来维护在线名单,各种脚本都已经把session操作封装得很易用了,不用像其他无状态的即时通信工具(比如使用UDP通信的工具)一样,要费一些脑细胞来解决在线

用xmlhttp和Java session监听改善站内消息系统

session|xml 原文出处:http://www.javaresearch.org/article/showarticle.jsp?column=106&thread=25340 这个题目含有许多需要解释的概念,最容易说明的是"站内消息",这是很多论坛都有的功能,可以通过web向其他的在线用户发送消息,很多用户都使用过.站内消息的第一个好处是大家都不需要安装客户端,你不用知道对方的MSN或者QQ,就能与他联系,称赞他的观点或者是给他一顿臭骂.第二个好处是客户管理方便,利用

[20160513]Restrict Session与静态监听.txt

[20160513]Restrict Session与静态监听.txt --给同事讲解动静态监听时,一次测试,当执行后alter system enable restricted session;发现远程用户依旧可以登录,检查发现是静态 --监听注册搞的鬼,做一个记录.并且把各种情况做一个总结: 1.环境: SYS@book> @ &r/ver1 PORT_STRING                    VERSION        BANNER --------------------

Oracle中静态监听导致的ORA-12523错误

今天配置完共享服务器模式之后发现登录过程中报错ORA-12523,排查错误之后发现是静态监听惹的祸. 本机之上有两个监听,一个静态监听1521端口,一个动态监听1526端口. LISTENER= (DESCRIPTION=  (ADDRESS_LIST=    (ADDRESS=(PROTOCOL=tcp)(HOST=jp)(PORT=1521))    (ADDRESS=(PROTOCOL=ipc)(KEY=extproc)))) LSNR2= (DESCRIPTION=  (ADDRESS_

ORA-12523: TNS: 监听程序无法找到适用于客户机连接的例程

    今天使用PL/SQL Developer连接到一台新的测试服务器时,遇到ORA错误:ORA-12523: TNS: 监听程序无法找到适用于客户机连接的例程.对应的监听日志文件里面错误为TNS-12523: TNS:listener could not find instance appropriate for the client connection   首先使用oerr命令查看ORA-12523错误提示的详细内容 [oracle@DB-Server admin]$ oerr ora

连接oracle数据库出现oracle ORA-12526: TNS: 监听程序: 所有适用例程都处于受限模式

服务器被重启之后连接出错,登陆服务器 sqlplus可以连接,但是jdbc以及sqldeveloper连接报错 ORA-12526 .   网上搜索到:   今天使用PL/SQL远程连接oracle数据库出现oracle ORA-12526: TNS: 监听程序: 所有适用例程都处于受限模式. 查了下原来之前改字符集时执行了:ALTER SYSTEM ENABLE RESTRICTED SESSION: 导致受限 解决办法:使用系统管理员身份运行以下一段代码 ALTER SYSTEM DISAB

DBID,SID,DB_NAME,DB_DOMAIN,INSTANCE_NAME,DB_UNIQUE_NAME,SERVICE_NAMES 及监听参数的说明

这篇文章中要讲的几个参数:        DB 相关的:        PFILE中的参数:DB_NAME,DB_DOMAIN,  INSTANCE_NAME,                             DB_UNIQUE_NAME,SERVICE_NAMES,                             GLOBAL_NAME,GLOBAL_NAMES        Listener.ora中参数:                             SID_NA

javascript-求教js当中的监听事件的问题,查了半天,也没有个所以然来,js高手帮帮忙啊

问题描述 求教js当中的监听事件的问题,查了半天,也没有个所以然来,js高手帮帮忙啊 有一个项目,有一个公共的界面,也就是无论做什么操作都会存在一个按钮,我就想在页面未登陆的的时候把按钮隐藏,该怎么做呢??要考虑登录超时跳转登录界面依然能让他隐藏 解决方案 默认隐藏,访问页面的时候自己从session什么的判断是否登录,登录了将信息赋值给一个js变量,然后显示按钮 <input type="button" style="display:none" value=