qq_18296295 2018-07-05 02:29 采纳率: 40%
浏览 2105
已结题

shiro的session监听器如何启动

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

这个是配置
图片说明

图片说明

  • 写回答

1条回答

  • qq_35632464 2018-07-05 03:11
    关注

    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
    來源:简书

    评论

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?