Sessions are buckets of data that your users carry with them for a period of time when using your application.
会话是用户在使用应用程序时携带的特定时间有效的数据
本系列文章目录如下:
- 为什么要使用Apache Shiro(一)
- Apache Shiro的三个重要概念(二)
- Apache Shiro核心功能之Authentication(三)
- Apache Shiro核心功能之Authorization(四)
- Apache Shiro核心功能之Session Management(五)
- Apache Shiro核心功能之Cryptography(六)
- Apache Shiro集成
- 将Apache Shiro集成到Spring-Boot应用程序中
- Shiro会话最重要的好处之一可能是它们是独立于容器的。这具有微妙但极其强大的影响。Shiro的架构支持可插入的Session数据存储,比如企业缓存、关系数据库、NoSQL系统等等。
- 基于POJO/J2SE (IoC 友好型)
- Session存储:会话数据可以轻松地存储在任意的数据源中
- 简单而强大的集群:Shiro的会话可以很容易地使用任何现成的网络缓存产品进行集群,比如Ehcache、Coherence、GigaSpaces等。
- 事件侦听:您可以侦听这些事件,并对它们做出自定义应用程序行为的响应——例如,在它们的会话过期时更新一条用户记录。
- 不活动/过期支持:会话会由于预期的不活动而过期,但如果需要的话,可以通过touch()方法来延长会话的时间,使其保持“活着”。这在RIA (Rich Internet Application)环境中非常有用,在这种环境中,用户可能正在使用桌面应用程序,但可能没有定期与服务器通信,但服务器会话不应该过期。
- Apache Shiro在安全框架的世界中提供了一些唯一的东西:一个一致的会话API,可用于任何应用程序和任何架构层。
- 异构客户端访问:Shiro会话的另一个好处是,如果需要,会话数据可以跨客户端技术共享。
- 可以用来做SSO
Subject’s Session
Session session = subject.getSession();
Session session = subject.getSession(boolean create);
第一个方法将返回Subject的现有会话,或者如果还没有会话,它将创建一个新会话并返回它。 第二个方法接受一个布尔参数,该参数决定是否创建一个新的Session如果它不存在。
Session methods
Session session = subject.getSession();
session.getAttribute("key", someValue);
Date start = session.getStartTimestamp();
Date timestamp = session.getLastAccessTime();
session.setTimeout(millis);
...