文档章节

shiro是如何实现httpsession的操作的

大海
 大海
发布于 2016/12/11 20:59
字数 235
阅读 70
收藏 0
点赞 0
评论 0
//获取当前用户
Subject subject = SecurityUtils.getSubject();
//获取当前用户session,默认为不存在session就创建session
Session 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实现的

© 著作权归作者所有

共有 人打赏支持
大海
粉丝 2
博文 83
码字总数 32431
作品 0
杭州
程序员
[翻译-Shiro]-10分钟教会你Apache Shiro

最近在研究Apache Shiro准备将自认为比较重要的资料翻译成中文(明天去拔牙,呜呜)。时间允许的情况下会尽可能多的翻译 前言 欢迎来到Apache Shiro 10分钟之旅! 希望通过这个简单、快速的示例...

乱笔·青玉 ⋅ 2013/02/03 ⋅ 3

SHIRO 相关类

Spring shiro filter 的初始化 org.apache.shiro.spring.web.ShiroFilterFactoryBean#getObject > createInstance 引出: 1. 接口 filterChainManager 管理所有的fileter和过滤器链 默认实现......

triankg ⋅ 2014/12/23 ⋅ 0

让Apache Shiro保护你的应用[转]

尝试保护你的应用时,你是否有过挫败感?是否觉得现有的Java安全解决方案难以使用,只会让你更糊涂?本文介绍的Apache Shiro,是一个不同寻常的Java安全框架,为保护应用提供了简单而强大的方...

hhs ⋅ 2011/05/27 ⋅ 2

让Apache Shiro保护你的应用

在尝试保护你的应用时,你是否有过挫败感?是否觉得现有的Java安全解决方案难以使用,只会让你更糊涂?本文介绍的Apache Shiro,是一个不同寻常的Java安全框架,为保护应用提供了简单而强大的...

游宵 ⋅ 2014/05/09 ⋅ 1

让Apache Shiro保护你的应用

什么是Apache Shiro? Apache Shiro(发音为“shee-roh”,日语“堡垒(Castle)”的意思)是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可为任何应用提供安全保障...

heroShane ⋅ 2014/02/09 ⋅ 0

Shiro 之 Filter(上):ShiroFilter

在上一篇中,我们分析了 Shiro Web 应用的入口 —— EnvironmentLoaderListener,它是一个 ServletContextListener,在 Web 容器启动的时候,它为我们创建了两个非常重要的对象: WebSecurit...

黄勇 ⋅ 2014/03/21 ⋅ 12

将 Shiro 作为应用的权限基础

Shiro 是 Java 世界中新近出现的权限框架,较之 JAAS 和 Spring Security,Shiro 在保持强大功能的同时,还在简单性和灵活性方面拥有巨大优势。本文介绍了 Shiro 的关键概念和权限模型,同时...

heroShane ⋅ 2014/02/26 ⋅ 0

shenzhanwang/Spring-shiro

Spring-shiro 为了给MIS系统添加一套较为通用的权限控制功能,本项目基于Spring,整合Apache Shiro框架,实现用户管理和权限控制,主要内容如下: 1.登录(带验证码),包括“记住我”的功能...

shenzhanwang ⋅ 2017/02/12 ⋅ 0

Apache Shiro 10分钟入门教程

1.简介 欢迎来到Apache Shiro的10分钟教程! 通过阅读这个快速简单的教程,您将充分了解开发人员如何在其应用程序中使用Shiro。而且你应该可以在10分钟内做到这一点。 2.概览 什么是Apache ...

尘_竹 ⋅ 05/22 ⋅ 0

亲手打造:构建第一个Apache Shiro应用

构建第一个Apache Shiro应用 如果您是Apache Shiro的新手,这个简短的教程将向您展示如何设置基于Apache Shiro的初始的且非常简单的安全应用。我们将一路讨论Shiro的核心概念,以帮助您熟悉S...

尘_竹 ⋅ 05/26 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JDK1.6和JDK1.7中,Collections.sort的区别,

背景 最近,项目正在集成测试阶段,项目在服务器上运行了一段时间,点击表格的列进行排序的时候,有的列排序正常,有的列在排序的时候,在后台会抛出如下异常,查询到不到数据,而且在另外一...

tsmyk0715 ⋅ 30分钟前 ⋅ 0

spring RESTful

spring RESTful官方文档:http://spring.io/guides/gs/rest-service/ 1. 可以这么去理解RESTful:其实就是web对外提供的一种基于URL、URI的资源供给服务。不是一个原理性知识点。是一个方法论...

BobwithB ⋅ 32分钟前 ⋅ 0

C++ 中命名空间的 5 个常见用法

相信小伙伴们对C++已经非常熟悉,但是对命名空间经常使用到的地方还不是很明白,这篇文章就针对命名空间这一块做了一个叙述。 命名空间在1995年被引入到 c++ 标准中,通常是这样定义的: 命名...

柳猫 ⋅ 35分钟前 ⋅ 0

@Conditional派生注解

@Conditional派生注解(Spring注解版原生的@Conditional作用) 作用:必须是@Conditional指定的条件成立,才给容器中添加组件,配置配里面的所有内容才生效; @Conditional扩展注解 作用(判...

小致dad ⋅ 36分钟前 ⋅ 0

适配器模式

适配器模式 对象适配器 通过私有属性来实现的类适配器 通过继承来实现的接口适配器 通过继承一个默认实现的类实现的

Cobbage ⋅ 39分钟前 ⋅ 0

Java 限流策略

概要 在大数据量高并发访问时,经常会出现服务或接口面对暴涨的请求而不可用的情况,甚至引发连锁反映导致整个系统崩溃。此时你需要使用的技术手段之一就是限流,当请求达到一定的并发数或速...

轨迹_ ⋅ 43分钟前 ⋅ 0

GridView和子View之间的间隙

默认的情况下GridView和子View之间会有一个间隙,原因是GridView为了在子View被选中时在子View周围显示一个框。去掉的办法如下: android:listSelector="#0000" 或 setSelector(new ColorDra...

国仔饼 ⋅ 46分钟前 ⋅ 0

idea插件开发

1 刷新页面要使用多线程 2 调试要使用restart bug 不要去关闭调试的idea 否则再次启动会卡住

林伟琨 ⋅ 46分钟前 ⋅ 0

Java 内存模型

物理机并发处理方案 绝大多数计算任务,并不是单纯依赖 cpu 的计算完成,不可避免需要与内存交互,获取数据。内存要拿到数据,需要和硬盘发生 I/O 操作。计算机存储设备与 cpu 之间的处理速度...

长安一梦 ⋅ 53分钟前 ⋅ 0

思路分析 如何通过反射 给 bean entity 对象 的List 集合属性赋值?

其实 这块 大家 去 看 springmvc 源码 肯定可以找到实现办法。 因为 spirngmvc 的方法 是可以 为 对象 参数里面的 list 属性赋值的。 我也没有看 具体的 mvc 源码实现,我这里只是 写一个 简...

之渊 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部