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类继承结构及主要类方法的更多相关文章

  1. QT类的继承结构

    QT类的继承结构 QT的类 core 数据集合 QString 几何类 QPoint QSize QRectangle 系统类 QColor QFont QImage QIcon QCursor QB ...

  2. Java -- 异常的捕获及处理 -- 异常类的继承结构

    7.1.3 异常类的继承结构 在整个Java的异常结构中,实际上有两个最常用的类,分别为Exception和Error,这两个类全都是Throwable的子类. ⊙ Exception : 一般标识的 ...

  3. 3、二、c# 面向对像编程。类,结构、C# 数据类型(引用类型、值 类型、指针类型)、ref参数与out参数、方法的重载、静态类型与静态成员、继承与多态、委托与事件

    一.类 定义类使用class关键字. <access specifier> class class_name { // member variables 成员变量 <access s ...

  4. c# 对 struct为什么不能继承类和结构的思考

    1.类.结构在使用的时候可以不调用构造函数,如果能够继承类,这种情况下不能够初始化基类,因为不执行构造函数 2.结构.所有的结构类型都默认是 sealed,通过 反汇编可以看到  ,这就阻止了结构被继 ...

  5. C#基础回顾(二)—页面值传递、重载与重写、类与结构体、装箱与拆箱

    一.前言 -孤独的路上有梦想作伴,乘风破浪- 二.页面值传递 (1)C#各页面之间可以进行数据的交换和传递,页面之间可根据获取的数据,进行各自的操作(跳转.计算等操作).为了实现多种方式的数据传递,C ...

  6. swift学习笔记3——类、结构体、枚举

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

  7. Swift3.0P1 语法指南——类和结构体

    原档:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programmi ...

  8. 【Swift学习】Swift编程之旅---类和结构体(十三)

    与其他编程语言所不同的是,Swift 并不要求你为自定义类和结构去创建独立的接口和实现文件.你所要做的是在一个单一文件中定义一个类或者结构体,系统将会自动生成面向其它代码的外部接口. 注意:通常一个类 ...

  9. swift学习笔记之-类和结构体

    //类和结构体 import UIKit //类和结构体 /* 1.枚举enum.结构体struct和String.Array.Dictionary类型,都属于值传递类型,被赋值给新的常量或变量时传递 ...

随机推荐

  1. SpringtMVC中配置 <mvc:annotation-driven/> 与 <mvc:default-servlet-handler/> 的作用与源码解析

    基于 Spring4.X 来学习 SpringtMVC, 在学习过程中,被"告知"在 XML 配置文件中建议设置如下两项: 一直不明白为什么,但又甘心.于是,花了一点时间来调试源码 ...

  2. Linux使用ssh公钥实现免批量分发管理服务器

    ssh 无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS为例. 管理机器外网IP10.0.0.61(内网172.16.1.61) 服务器外网1 ...

  3. mysql limit 接收变量

    参考文章:https://blog.csdn.net/ljz2009y/article/details/7887743 PREPARE s1 FROM 'SELECT * FROM t LIMIT ? ...

  4. 关于JSP页面Property [ssid] not found on type [java.lang.String]错误的注意事项

    转发于:http://blog.csdn.net/w86440044/article/details/28277177

  5. JAVA关于一些变量的技巧

    如果一个变量的值不变,而且他还要被多次用到 另建一个类,把变量定义到里面   注意  private static      public class JexlConfig {     private ...

  6. Restful风格,PUT修改功能请求,表单中存在文件报错-HTTP Status 405 - Request method 'POST' not supported

    解决方案配置如下 <!-- 配置文件上传解析器 --> <bean id="multipartResolver" class="org.springfr ...

  7. mybatis整合oracle 实现一对多查询 备注?

    <resultMap type="com.asiainfo.channel.model.weeklyNewspaper.WorkReportInfo" id="Wo ...

  8. MySQL之索引详解

    这篇博客将要阐述为什么使用b+树作为索引,而不是b树或者其他树 1.什么是b树 (图片来自网络) b树相关特性:⑴关键字分布在整棵树中 ⑵任何一个关键字只出现在一个节点上 ⑶搜索可能在非叶子节点上结束 ...

  9. 集大1513 & 1514班 软件工程第一次作业评分与点评

    谢谢大多数同学按时完成了作业,同学态度都比较端正,没有为了完成作业或者讨好老师而说一些假话空话. 很多同学选择CS之前并没有从兴趣或者擅长出发.这是一个普遍的现象,十年前我们是这样,十年后的孩子们还是 ...

  10. Beta Scrum Day 1

    听说