博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shiro是如何实现httpsession的操作的
阅读量:6843 次
发布时间:2019-06-26

本文共 1310 字,大约阅读时间需要 4 分钟。

  hot3.png

//获取当前用户Subject subject = SecurityUtils.getSubject();//获取当前用户session,默认为不存在session就创建sessionSession session = subject.getSessio();而subject的实现类通过打断点可以知道其实现类为DelegatingSubject,而他有一个方法叫getSession(boolean create),一看就知道是获取session的意思,这个方法里有一段代码:Session session = this.securityManager.start(sessionContext);这个this.securityManager的是实现类是ServletContainerSessionManager,查看他的start方法: Session session = this.securityManager.start(sessionContext);其实就是包含了一个createSession方法,然后看HttpSession httpSession = request.getSession();这段代码,原来shiro获取session还是依赖着httpSession的。  protected Session createSession(SessionContext sessionContext) throws AuthorizationException {        if (!WebUtils.isHttp(sessionContext)) {            String msg = "SessionContext must be an HTTP compatible implementation.";            throw new IllegalArgumentException(msg);        }        HttpServletRequest request = WebUtils.getHttpRequest(sessionContext);        HttpSession httpSession = request.getSession();        //SHIRO-240: DO NOT use the 'globalSessionTimeout' value here on the acquired session.        //see: https://issues.apache.org/jira/browse/SHIRO-240        String host = getHost(sessionContext);        return createSession(httpSession, host);    }

继续往下想,request是如何获取session的。。个人认为是tomcat实现的

转载于:https://my.oschina.net/wwwd/blog/804062

你可能感兴趣的文章
页面渲染深入解析
查看>>
centos6.5安装cacti监控(二)
查看>>
情冢(中)
查看>>
web-inf 文件
查看>>
NoSql redis windows下的环境搭建
查看>>
PHP利用mongodb存取文件
查看>>
Zabbix Documentation 3.0
查看>>
udp组播
查看>>
yum方式远程安装gnome
查看>>
如何学好C语言
查看>>
Linux学习之CentOS(十)--虚拟机下的CentOS如何上网
查看>>
html5的postmessage实现js前端跨域访问及调用解决方案
查看>>
vscode的 ESLINT 检查vue,js文件配置说明
查看>>
实现Div层里的文字垂直居中的方法
查看>>
我的友情链接
查看>>
谁说使用Python你就写不出混乱的代码?
查看>>
网桥和交换机的区别
查看>>
使用Raspcontrol在线查看树莓派各项情况
查看>>
超强JIRA流程图
查看>>
java 导出excel表格
查看>>