shiro会话管理示例代码

2019-01-16 23:11:36王旭

设置/获取/删除会话属性;在整个会话范围内都可以对这些属性进行操作。  

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

会话管理器

会话管理器管理着应用中所有Subject的会话的创建、维护、删除、失效、验证等工作。是Shiro的核心组件,顶层组件SecurityManager直接继承了SessionManager,且提供了SessionsSecurityManager实现直接把会话管理委托给相应的SessionManager,DefaultSecurityManager及
DefaultWebSecurityManager默认SecurityManager都继承了SessionsSecurityManager。 

SecurityManager提供了如下接口: 

Java代码  


Session start(SessionContext context); //启动会话 Session getSession(SessionKey key) throws SessionException; //根据会话Key获取会话

另外用于Web环境的WebSessionManager又提供了如下接口: 

Java代码  

boolean isServletContainerSessions();//是否使用Servlet容器的会话

Shiro还提供了ValidatingSessionManager用于验资并过期会话: 

Java代码  

void validateSessions();//验证所有会话是否过期

Shiro提供了三个默认实现:

DefaultSessionManager:DefaultSecurityManager使用的默认实现,用于JavaSE环境;
ServletContainerSessionManager:DefaultWebSecurityManager使用的默认实现,用于Web环境,其直接使用Servlet容器的会话;

DefaultWebSessionManager:用于Web环境的实现,可以替代ServletContainerSessionManager,自己维护着会话,直接废弃了Servlet容器的会话管理。

替换SecurityManager默认的SessionManager可以在ini中配置(shiro.ini):

Java代码  

[main] sessionManager=org.apache.shiro.session.mgt.DefaultSessionManager securityManager.sessionManager=$sessionManager

Web环境下的ini配置(shiro-web.ini):

<!--EndFragment-->

Java代码