微服务 教程
1085个小节阅读:195.6k
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
Shiro中提供了会话管理器,可以对会话对象进行配置和监听,用法如下:
创建会话监听器
xxxxxxxxxx
public class MySessionListener implements SessionListener {
//会话创建时触发
public void onStart(Session session) {
System.out.println("会话创建:" + session.getId());
}
//会话过期时触发
public void onExpiration(Session session) {
System.out.println("会话过期:" + session.getId());
}
//退出/会话过期时触发
public void onStop(Session session) {
System.out.println("会话停止:" + session.getId());
}
}
在会话管理器中配置会话监听器
xxxxxxxxxx
// 会话管理器
public SessionManager sessionManager(MySessionListener sessionListener) {
// 创建会话管理器
DefaultWebSessionManager sessionManager = new DefaultWebSessionManager();
// 创建会话监听器集合
List<SessionListener> listeners = new ArrayList();
listeners.add(sessionListener);
// 将监听器集合设置到会话管理器中
sessionManager.setSessionListeners(listeners);
// 全局会话超时时间(单位毫秒),默认30分钟,设置为5秒
sessionManager.setGlobalSessionTimeout(5*1000);
// 是否开启删除无效的session对象,默认为true
sessionManager.setDeleteInvalidSessions(true);
// 是否开启定时调度器进行检测过期session,默认为true
sessionManager.setSessionValidationSchedulerEnabled(true);
return sessionManager;
}
在SecurityManager中配置会话管理器
xxxxxxxxxx
public DefaultWebSecurityManager securityManager(MyRealm myRealm,MyRealm2 myRealm2,SessionManager sessionManager){
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
// 自定义Realm放入SecurityManager中
// securityManager.setRealm(myRealm);
// 设置Realm管理者(需要设置在Realm之前)
securityManager.setAuthenticator(modularRealmAuthenticator());
List<Realm> realms = new ArrayList();
realms.add(myRealm);
// realms.add(myRealm2);
securityManager.setRealms(realms);
securityManager.setSessionManager(sessionManager);
return securityManager;
}
实时效果反馈
1. 在Shiro中,会话管理器对象为
A SessionManager
B SessionHandler
C SeManager
D SeHandler
2. 在Shiro中,会话监听器需要实现
A Listener
B SessionListener
C HttpSessionListener
D SessionFilter
答案
1=>A 2=>B