第十章 会话管理(六) sessionFactory
来源:互联网 发布:如何做好旅游网络推广 编辑:程序博客网 时间:2024/06/01 10:47
sessionFactory 是创建会话的工厂,根据相应的Subject 上下文信息来创建会话;默认提供了SimpleSessionFactory用来创建SimpleSession会话。
首先自定义一个Session:
public class OnlineSession extends SimpleSession {public static enum OnlineStatus {on_line("在线"), hidden("隐身"), force_logout("强制退出");private final String info;private OnlineStatus(String info) {this.info = info;}public String getInfo() {return info;}}private String userAgent; //用户浏览器类型private OnlineStatus status = OnlineStatus.on_line; //在线状态private String systemHost; //用户登录时系统IP//省略其他}
OnlineSession 用于保存当前登录用户的在线状态,支持如离线等状态的控制。
接着自定义SessionFactory:
public class OnlineSessionFactory implements SessionFactory {@Overridepublic Session createSession(SessionContext initData) {OnlineSession session = new OnlineSession();if (initData != null && initData instanceof WebSessionContext) {WebSessionContext sessionContext = (WebSessionContext) initData;HttpServletRequest request = (HttpServletRequest)sessionContext.getServletRequest();if (request != null) {session.setHost(IpUtils.getIpAddr(request));session.setUserAgent(request.getHeader("User-Agent"));session.setSystemHost(request.getLocalAddr() + ":" +request.getLocalPort());}}return session;}}
根据会话上下文创建相应的OnlineSession。
最后在shiro-web.ini配置文件中配置:
sessionFactory=org.apache.shiro.session.mgt.OnlineSessionFactorysessionManager.sessionFactory=$sessionFactory
更多请参考https://github.com/zhangkaitao/es/tree/master/web/src/main/java/org/apache/shiro中的相关代码。
阅读全文
0 0
- 第十章 会话管理(六) sessionFactory
- 第十章 会话管理(一) 会话
- 第十章 会话管理
- 第十章 会话管理
- 第十章 会话管理
- 第十章 会话管理(二) 会话管理器
- 第十章 会话管理(三) 会话监听器
- 第十章 会话管理(四) 会话存储/持久化
- 第十章 会话管理(五) 会话验证
- 第十章 Shiro 会话管理
- 第十章 会话管理——《跟我学Shiro》
- 第十章 会话管理——《跟我学Shiro》
- 第十章 会话管理——《跟我学Shiro》
- 第十章 会话管理——《跟我学Shiro》
- 第十章 会话管理——《跟我学Shiro》
- 第十章 Shiro会话管理——《跟我学Shiro》
- 第六章:会话管理
- ---会话管理(cookie)
- 对开根号判断素数的优化
- java并发编程-PriorityBlockingQueue
- CentOS7.0以上版本linux防火墙问题
- springboot整合mybatis,动态数据源配置
- eclipse和jdk历史版本下载地址
- 第十章 会话管理(六) sessionFactory
- ionic运行问题
- CentOS下JDK 1.8的安装
- ArrayList、Vector、LinkedList的区别及其优缺点?
- C语言——关机小程序
- 面向对象思想
- 协程的好处有哪些?
- 进制和进制的转换
- java 的数据库驱动加载过程