shiro会话监听_Shiro实战(五) - 会话管理

本文深入探讨Apache Shiro的会话管理功能,包括会话简介、会话管理器、会话监听器、会话存储、会话验证调度器的实现和配置。Shiro提供独立于容器的会话支持,适用于JavaSE和JavaEE环境,支持会话持久化、集群、失效管理和SSO。文章通过实例展示了如何配置和自定义Shiro的会话组件,如设置会话超时、创建自定义Session和SessionFactory。
摘要由CSDN通过智能技术生成

Shiro提供了完整的企业级会话管理功能,不依赖于底层容器(如web容器Tomcat),不管JavaSE还是JavaEE环境都可以使用,提供了会话管理、会话事件监听、会话存储/持久化、容器无关的集群、失效/过期支持、对Web的透明支持、SSO单点登录的支持等特性

即直接使用Shiro的会话管理可以直接替换Web容器的会话管理

AAffA0nNPuCLAAAAAElFTkSuQmCC

1 会话简介

即用户访问应用时保持的连接关系,在多次交互中应用能够识别出当前访问的用户是谁,且可以在多次交互中保存一些数据

如访问一些网站时登录成功后,网站可以记住用户,且在退出之前都可以识别当前用户是谁。

Shiro的会话支持不仅可以在普通的JavaSE应用中使用,也可以在JavaEE应用中使用,如web应用。且使用方式是一致的。login("classpath:shiro.ini", "zhang", "123");

Subject subject = SecurityUtils.getSubject();

Session session = subject.getSession();

登录成功后使用Subject.getSession()即可获取会话

AAffA0nNPuCLAAAAAElFTkSuQmCC

其等价于Subject.getSession(true)

AAffA0nNPuCLAAAAAElFTkSuQmCC

即如果当前没有创建Session对象会创建一个;另外Subject.getSession(false),如果当前没有创建Session则返回null(不过默认情况下如果启用会话存储功能的话在创建Subject时会主动创建一个Session)

AAffA0nNPuCLAAAAAElFTkSuQmCC

DelegatingSubject#getSession(boolean create)

获取当前会话的唯一标识session.getId();

AAffA0nNPuCLAAAAAElFTkSuQmCC获取当前Subject的主机地址,该地址是通过HostAuthenticationToken.getHost()提供的session.getHost();

AAffA0nNPuCLAAAAAElFTkSuQmCC获取/设置当前Session的过期时间;如果不设置默认是会话管理器的全局过期时间session.getStartTimestamp()session.getLastAccessTime();

AAffA0nNPuCLAAAAAElFTkSuQmCC

AAffA0nNPuCLAAAAAElFTkSuQmCC

获取会话的启动时间及最后访问时间;如果是JavaSE应用需要自己定期调用session.touch()去更新最后访问时间;如果是Web应用,每次进入ShiroFilter都会自动调用session.touch()来更新最后访问时间更新会话最后访问时间及销毁会话

当Subject.logout()

AAffA0nNPuCLAAAAAElFTkSuQmCC

会自动调用stop

AAffA0nNPuCLAAAAAElFTkSuQmCC

销毁会话

在web中,调用javax.servlet.http.HttpSession. invalidate()

AAffA0nNPuCLAAAAAElFTkSuQmCC

也会自动调用Shiro Session.stop方法进行销毁Shiro的会话

设置/获取/删除会话属性;在整个会话范围内都可以对这些属性进行操作session.setAttribute("key", "123");

Assert.assertEquals("123", session.getAttribute("key"));

session.removeAttribute("key");

Shiro提供的会话可以用于JavaSE/JavaEE环境,不依赖于任何底层容器,可以独立使用,是完整的会话模块

2 会话管理器

Shiro的核心组件,会话管理器管理着应用中所有Subject的会话的创建、维护、删除、失效、验证等工作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值