shiro的session监听器如何启动

shiro 监听session 这个监听器要怎么启动图片说明

这个是配置
图片说明

图片说明

HttpSessionListener接口监听Session的创建和失效
spring 使用 shiro 后,由于shiro重新封装了原有的session,所以不能再使用原来的session监听方法了

  • 配置监听类
 * <!-- Shiro's main business-tier object for web-enabled applications -->  
    <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">  
        <property name="realm" ref="shiroDbRealm" />  
        <property name="cacheManager" ref="shiroEhcacheManager" />  
        <property name="sessionManager" ref="sessionManager" /> <!-- 配置sessionListener -->  
    </bean>  

    <!-- 自定义session监听器 -->  
    <bean id="sessionManager" class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager">  
        <property name="sessionListeners" ref="sessionListener1" />  
    </bean>  
    <bean id="sessionListener1" class="org.springside.examples.quickstart.service.sessionservice.SessionListener1"></bean>

在shiro的配置文件中添加启动监听类的入口

 import org.apache.shiro.session.Session;  
import org.apache.shiro.session.SessionListener;  

public class SessionListener1 implements SessionListener {  

    @Override  
    public void onStart(Session session) {//会话创建触发 已进入shiro的过滤连就触发这个方法  
        // TODO Auto-generated method stub  
        System.out.println("会话创建:" + session.getId());  
    }  

    @Override  
    public void onStop(Session session) {//退出  
        // TODO Auto-generated method stub  
        System.out.println("退出会话:" + session.getId());  
    }  

    @Override  
    public void onExpiration(Session session) {//会话过期时触发  
        // TODO Auto-generated method stub  
        System.out.println("会话过期:" + session.getId());   
    }  

} 

如果只想监听某一个事件,可以继承SessionListenerAdapter实现

 public class MySessionListener extends SessionListenerAdapter {  
    @Override  
    public void onStart(Session session) {  
        System.out.println("会话创建:" + session.getId());  
    }  
}

作者:没事遛弯
链接:https://www.jianshu.com/p/0f949aa730c1
來源:简书