SecurityManager
- 安全管理器,所有与安全相关的操作都会与SecurityManager交互(负责与shiro的其他组件进行交互,类似与SpringMVC中的DispatcherServlet)
- 管理着所有Subject,所有Subject都绑定到SecurityManager,与Subject的所有交互都会委托给SecurityManager
- Shiro使用时会先初始化SecurityManager再往里面注入shiro其他组件
- spring-boot-shiro中初始化的是DefaultWebSecurityManager,默认情况下,session的管理由DefaultSecurityManager或DefaultWebSecurityManager中的SessionManager来负责
DefaultSecurityManager
使用较少
DefaultWebSecurityManager
- 默认的web安全管理器,应用项目中需要初始化此安全管理器
- 可以通过继承DefaultSecurityManager或DefaultWebSecurityManager来实现自定义SecurityManager,但一般没必要,直接使用DefaultWebSecurityManager就可满足需求
- DefaultWebSecurityManager则将session管理委托给ServletContainerSessionManager
- 可以通过setSessionManager方法来指定sessionManager,如果不指定sessionManager的话就用的SecurityManager默认的sessionManager
SessionManager
- SecurityManager会将session管理委托给SessionManager
- SessionsSecurityManager的start方法中将session的创建委托给了具体的sessionManager,start方法是创建session的关键入口
SimpleSession
- shiro的自实现,是shiro对session的一种拓展,实现了ValidatingSession接口,具有自我校验的功能
- 一般不对外暴露,暴露的往往是他的代理:DelegatingSession
SimpleSession属性
-
id:就是session id;
-
startTimestamp:session的创建时间;
-
stopTimestamp:session的失效时间;
-
lastAccessTime:session的最近一次访问时间,初始值是startTimestamp
-
timeout:session的有效时长,默认30分钟
-
expired:session是否到期