1. 会话
所谓会话,即用户访问应用时保持的连接关系,在多次交互中应用能够识别出当前访问的用户是谁,且可以在多次交互中保存一些数据.
1.1 Java使用
1 | <dependencies> |
1 | import org.apache.shiro.SecurityUtils; |
2. 会话管理器
会话管理器管理着应用中所有Subject的会话的创建,维护,删除,失效,验证等工作.
1 | SecurityManager提供了如下接口 |
2.1 整合
1 | DefaultWebSecurityManager defaultWebSecurityManager = new DefaultWebSecurityManager(); |
3. 会话监听器
会话监听器用于监听会话创建,过期及停止事件.
3.1 Java使用
1 | <!--工程中单独引入了slf4j,不去除的话jar包冲突--> |
1 | public class MySessionListener implements SessionListener { |
1 | // 如果只想监听某一个事件,可以继承SessionListenerAdapter实现: |
3.2 整合
1 | DefaultWebSecurityManager defaultWebSecurityManager = new DefaultWebSecurityManager(); |
4. 会话存储/持久化
SessionDAO是用于session持久化的,SessionManager只是负责session的管理,持久化的工作是由SessionDAO完成的.
4.1 Java使用
1 | // 自定义DAO |
4.2 整合
1 | DefaultWebSecurityManager defaultWebSecurityManager = new DefaultWebSecurityManager(); |
5. 源代码地址和注意事项
5.1 源代码地址
GitHub链接:https://github.com/ganlu19940318/shiro-session
5.2 注意事项
- 自定义DAO的doCreate中不要忘记assignSessionId(session,sessionId).
- Apache Shiro 1.3.2是稳定版,对于版本1.4.0,部分资料已经过时.
- Shiro不推荐使用shiro-all这个总包,可能会造成Maven工作不正常,一般常用的是core,spring,web这三个包.
6. 参考链接
跟我学Shiro教程
一步一步教你用shiro——1引入shiro框架
SpringBoot+Shiro学习(五):Session会话管理
shiro会话监听器
一步一步教你用shiro——4配置并自定义sessionDao
shiro的SessionDao(十二)