shiro的sessionManager类继承结构及主要类方法
shiro1.3.2
sessionManage的作用是对会话进行管理。
1.类结构
2.主要接口介绍
- SessionManager:
包括两个方法,一个是新建会话,一个是通过key获取会话
- ValidatingSessionManager:
主要是对会话进行验证的功能。web端服务器通常会维持会话信息,但是在浏览器直接关闭,用户没有手动退出的情况下,服务器维护的该会话难以被手动清理。
就需要服务端定时轮询,清理过期的会话。
- NativeSessionManager
提供会话的大部分功能。主要有:会话开始时间、最后访问时间、是否有效、超时时长、更新会话、获取会话host、停止会话、设置与获取会话相关的属性等。其中会话的attribute可以用来在登录成功后,手动存储用户相关信息。
3.主要的几个实现类
AbstractSessionManager
实现了SessionManager。当然,还是个抽象类,只加了个自己的字段:全局超时时间。
AbstractNativeSessionManager extends AbstractSessionManager implements NativeSessionManager, EventBusAware
继承了上面的那个抽象类。并实现了NativeSessionManager的大部分方法,并实现EventBusAware来注入了EventBus。
引入了几个字段:会话监听器集合、EventBus。
主要的抽象方法只有两个:
protected abstract Session doGetSession(SessionKey key)
获取会话。
protected abstract Session createSession(SessionContext context) throws AuthorizationException;
创建会话。
AbstractValidatingSessionManager extends AbstractNativeSessionManager
implements ValidatingSessionManager, Destroyable
继承了上面的抽象类,并加入了validate相关的方法一堆。
实现了上面的两个抽象接口,并在其实现中抽出了另外几个抽象方法,给下层去实现。典型的模板方法设计模式。
提供了以下几个抽象方法出去:
protected abstract Session retrieveSession(SessionKey key) throws UnknownSessionException;
获取会话。
protected abstract Session doCreateSession(SessionContext initData) throws AuthorizationException;
创建会话。
protected abstract Collection<Session> getActiveSessions();
获取全部的活跃会话。
DefaultSessionManager extends AbstractValidatingSessionManager implements CacheManagerAware
继承上面抽象类,实现CacheManagerAware,在cachemanager存在的情况下,使用缓存来提升性能。
加了几个字段,会话工厂,会话操作的dao,是否删除无效会话的控制项。
主要还是对上层的抽象方法:获取、新建会话的实现。
DefaultWebSessionManager extends DefaultSessionManager implements WebSessionManager
追加了web相关的功能,比如从cookie和url中获取sessionId等。
大体如此。
shiro的sessionManager类继承结构及主要类方法的更多相关文章
- QT类的继承结构
QT类的继承结构 QT的类 core 数据集合 QString 几何类 QPoint QSize QRectangle 系统类 QColor QFont QImage QIcon QCursor QB ...
- Java -- 异常的捕获及处理 -- 异常类的继承结构
7.1.3 异常类的继承结构 在整个Java的异常结构中,实际上有两个最常用的类,分别为Exception和Error,这两个类全都是Throwable的子类. ⊙ Exception : 一般标识的 ...
- 3、二、c# 面向对像编程。类,结构、C# 数据类型(引用类型、值 类型、指针类型)、ref参数与out参数、方法的重载、静态类型与静态成员、继承与多态、委托与事件
一.类 定义类使用class关键字. <access specifier> class class_name { // member variables 成员变量 <access s ...
- c# 对 struct为什么不能继承类和结构的思考
1.类.结构在使用的时候可以不调用构造函数,如果能够继承类,这种情况下不能够初始化基类,因为不执行构造函数 2.结构.所有的结构类型都默认是 sealed,通过 反汇编可以看到 ,这就阻止了结构被继 ...
- C#基础回顾(二)—页面值传递、重载与重写、类与结构体、装箱与拆箱
一.前言 -孤独的路上有梦想作伴,乘风破浪- 二.页面值传递 (1)C#各页面之间可以进行数据的交换和传递,页面之间可根据获取的数据,进行各自的操作(跳转.计算等操作).为了实现多种方式的数据传递,C ...
- swift学习笔记3——类、结构体、枚举
之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...
- Swift3.0P1 语法指南——类和结构体
原档:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programmi ...
- 【Swift学习】Swift编程之旅---类和结构体(十三)
与其他编程语言所不同的是,Swift 并不要求你为自定义类和结构去创建独立的接口和实现文件.你所要做的是在一个单一文件中定义一个类或者结构体,系统将会自动生成面向其它代码的外部接口. 注意:通常一个类 ...
- swift学习笔记之-类和结构体
//类和结构体 import UIKit //类和结构体 /* 1.枚举enum.结构体struct和String.Array.Dictionary类型,都属于值传递类型,被赋值给新的常量或变量时传递 ...
随机推荐
- 处理win7任务栏通知区域图标异常问题
故障现象:安装的某软件比如QQ,应用程序运行图标始终没有在win7任务栏通知区域显示出来,经观查发现win7任务栏通知区域有几个已删除应用的图标出现,应该是有故障了. 故障现象一:已经卸载的程序,还在 ...
- 分别用EasyAR和Vuforia开发AR(入门级)
最近在一边学习谷歌TensorFlow,一边在做些简单的AR demo,在此总结下学习经验(自学的过程异常痛苦啊,还有总会有好人会在社区分享经验,这就是前人栽树,后人乘凉呐) 自从任天堂推出<精 ...
- 【网络】 应用&传输层笔记
应用层 应用层常用的协议和各自对应的TCP/UDP端口: DNS TCP/UDP 53 HTTP TCP 80 SMTP TCP 25 POP UDP 110 Telnet TCP 23 DHCP U ...
- USB Audio设计与实现
1 前言 本文将基于STM32F4 Discovery板,从零开始设计并实现一个USB Audio的例子. 2 设计构思 所谓的USB AUDIO就是制作一个盒子,这个盒子可以通过USB连接到PC,P ...
- SpringMVC参数校验
使用SpringMVC时配合hibernate-validate进行参数的合法性校验,能节省一定的代码量. 使用步骤 1.搭建Web工程并引入hibernate-validate依赖 <depe ...
- 关于如何在mac系统上安装Git并在码市上建立项目
对Git一窍不通,为了在mac系统上安装Git,查了很多资料,走了很多弯路,一切搞定后发现其实很简单. 1.在https://brew.sh上按要求安装Homebrew. 2.在电脑终端键入brew ...
- HDFS之HA机制
- Week1绪论--抽象数据类型
一.作业题目 1.构造有理数T,元素e1,e2分别被赋以分子.分母值 2.销毁有理数T 3.用e(引用类型参数)返回有理数T的分子或分母,当入参i为1时返回分子, i为2是返回分母. 4.将有理数T的 ...
- 201621123043 《Java程序设计》第11周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 本次PTA作业题集多线程 1. 源代码阅读:多线程程序BounceThread 1.1 BallR ...
- Linux学习--进程概念
>>进程 说进程,感觉好空洞,来一张图,Linux下的进程: ps -eo pid,comm,cmd 说明:-e表示列出全部进程,-o pid,comm,cmd表示我们需要PID,COMM ...