shiro中如何检测session失效、退出等事件

shiro中如何检测session失效、退出等事件

前言

我们知道shiro是一个优秀的web权限管理的优秀框架,shiro中实现了对用户登录、资源访问控制等功能,使用shiro能够让我们的应用web系统更加安全,同时降低了自己开发一套权限管理系统的代价;本篇文章想向读者介绍的是我们如何在使用shiro框架时,实现对用户session登录、登出等事件的监听,以便应用系统更好的实现对用户事件的管理。

一、shiro中的session是什么?

首先我们要明确shiro中的session和传统的httpSession不是一个东西,shiro中的session是shiro框架自己实现的一个用户会话管理器,做到和httpSession一样存储登录用户信息,用户登出后清除等功能。
如果在shiro框架中实现对session的管理和控制,需要我们自己实现sessioinManager,即session会话管理类,本文引用的是shiro框架中包含的一个基础的会话管理功能作介绍,抛砖引玉,读者可以根据它的使用方式定义更多功能自己的实现类。

二、使用代码

1.自定义sessionManager

@Bean
    public SessionManager memeryManager(
            @Qualifier(value = "memoryCacha")
            CacheManager cacheManager) {
        DefaultWebSessionManager sessionManager = new DefaultWebSessionManager();
        sessionManager.setSessionDAO(new MemorySessionDAO());
        sessionManager.setCacheManager(cacheManager);
        // 局会话超时时间(单位毫秒),默认30分钟
        sessionManager.setGlobalSessionTimeout(sessionTimeOut * 1000);
        sessionManager.setSessionValidationInterval(sessionTimeOut * 1000);
        // 取消登录成功后url 后面的 JSESSIONID
        sessionManager.setSessionIdUrlRewritingEnabled(false);
        // 删除过期的session
        sessionManager.setDeleteInvalidSessions(true);
        // 定时检测session过期,10s检测一次
        sessionManager.setSessionValidationSchedulerEnabled(true);
        ExecutorServiceSessionValidationScheduler validationScheduler = new ExecutorServiceSessionValidationScheduler(
                sessionManager);
        validationScheduler.setInterval(sessionInterval);
        sessionManager.setSessionValidationScheduler(validationScheduler);
        sessionManager.setSessionListeners(Collections.singleton(listener));
        return sessionManager;
    }

2.代码运行效果

在这里插入图片描述

总结

如下我们就实现了对shiro的session进行活动监控,这样我们可以实现用户自动登出、登出后的相关信息清除。可通过
shiroFilterFactoryBean.getFilters().put("authc", new BaseFormAuthenticationFilter()); 控制session失效后页面跳转地址或做其他的pv/uv统计操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值