文档章节

Shiro SessionContext和SessionKey的设计概念

o
 osc_odyg6b92
发布于 2018/07/13 14:58
字数 239
阅读 14
收藏 0

行业解决方案、产品招募中!想赚钱就来传!>>>

SessionContext

其行为有:

DefaultSessionContext

其主要是实现了SessionContext的行为,MapContext主要是实现了Map的行为

WebSessionContext

其主要行为是,继承了SessionContext,拥有了后者的行为

DefaultWebSessionContext

其主要实现了WebSessionContext的行为和RequestPairSource的行为

RequestPairSource

其主要行为就是获得Request和Response,但是该行为WebSessionContext也具备了,有点冗余

HttpServletRequest的获取

创建SessionContext时会将HttpServletRequest设置到DefaultWebSessionContext中,通过后者获得

HttpServletRequest request = WebUtils.getHttpRequest(context);

WebUtils

public static HttpServletRequest getHttpRequest(Object requestPairSource) {
    ServletRequest request = getRequest(requestPairSource);
    if (request instanceof HttpServletRequest) {
        return (HttpServletRequest) request;
    }
    return null;
}

public static ServletRequest getRequest(Object requestPairSource) {
    if (requestPairSource instanceof RequestPairSource) {
        return ((RequestPairSource) requestPairSource).getServletRequest();
    }
    return null;
}

SessionKey

其行为有

DefaultSessionKey 

其主要是实现了SessionKey的行为

WebSessionKey 

其主要是实现了RequestPairSource的行为,又继承了DefaultSessionKey拥有了后者的行为

创建WebSessionKey时,将HttpServletRequest设置到WebSessionKey中

ServletRequest request = WebUtils.getRequest(context);
ServletResponse response = WebUtils.getResponse(context);
SessionKey key = new WebSessionKey(session.getId(), request, response);

通过WebSessionKey获得HttpServletRequest

ServletRequest request = WebUtils.getRequest(key);

 

o
粉丝 1
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
点阵字符设计工具--MATPaint

MATPaint 是 MATrix Paint 的缩写,用于设计点阵字符,最高支持 32x32 像素。 该工具的功能: 新建、打开和保持文件 记住上次状态 保持模式为 PNG 图像 为微控制器生成十六进制码 打印预览和...

匿名
2012/11/26
741
0
树软辅助设计工具--MTC-2008

树软辅助设计工具不仅是一个软件开发平台,而且是一个设计树形软件的CAD。 树型软件工程方法(简称树软法)以崭新的观念丰富和发展了软件工程方法。树软法定义了系统、事件、任务、作业和语句...

Treesoft
2012/12/06
4K
0
Lisp的STM库--STMX

STMX 是一个高性能的 Common Lisp 库,用于实现可组合的软件事务内存机制。 事务内存是一种并行程序设计的方式,其来自于数据库管理系统(DBMS)中的事务(Transaction)概念。事务内存目前有...

匿名
2013/05/09
812
0
新概念PHP包管理器--PHP Composer

几乎每种语言都有包管理器。Java有Maven,Python有easy_install和pip,Ruby有gem,Nodejs有npm。说到PHP当然也有PEAR,但我一直认为PEAR是设计最烂的一个包管理器:依赖处理不到位、配置复杂...

匿名
2013/05/15
5.8K
0
CSS框架设计器--Thinkin' Tags

CSS框架YAML的开发者Dirk Kesse近日推出了一个在线网页编辑器Thinkin' Tags,目前该编辑器还处alpha阶段。YAML是一个模块化的CSS框架,可帮助开发者创建灵活的、可访问的、响应式网站。而Thi...

匿名
2013/05/17
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

如何在SQL Server中将多行文本合并为单个文本字符串?

问题: Consider a database table holding names, with three rows: 考虑一个包含名称的数据库表,该表具有三行: PeterPaulMary Is there an easy way to turn this into a single str......

富含淀粉
16分钟前
9
0
在JavaScript中生成特定范围内的随机整数? - Generating random whole numbers in JavaScript in a specific range?

问题: 如何可以生成两个指定的变量之间的随机整数在JavaScript中,例如x = 4和y = 8将输出任何的4, 5, 6, 7, 8 ? 解决方案: 参考一: https://stackoom.com/question/6PRz/在JavaScript中...

fyin1314
46分钟前
8
0
Vim清除最后一个搜索突出显示 - Vim clear last search highlighting

问题: Want to improve this post? 想要改善这篇文章吗? Provide detailed answers to this question, including citations and an explanation of why your answer is correct. 提供此问题......

技术盛宴
今天
23
0
马化腾每天刷 Leetcode?代码你打算写到几岁?

本文作者:o****0 前几天,一张未证真伪的截图流传,图中显示马化腾几乎每天都会在 Leetcode 上提交代码。 截图还贴出一个 Leetcode 账户地址。该地址的头像已从马化腾的照片换成腾讯 logo,...

百度开发者中心
前天
13
0
滴滴 3000+ Kylin Cube 背后的实践经验揭秘

本次分享主要有三个部分:Kylin 在滴滴的整体应用、架构的实践经验、滴滴全局字典最新版本的实现以及 Kylin 最新实时 OLAP 探索经验分享。 Kylin 在滴滴的应用&架构 Kylin 在滴滴的三类应用场...

浪尖聊大数据
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部