博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shiro的sessionManager类继承结构及主要类方法
阅读量:5060 次
发布时间:2019-06-12

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

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
getActiveSessions(); 获取全部的活跃会话。
DefaultSessionManager extends AbstractValidatingSessionManager implements CacheManagerAware

 

继承上面抽象类,实现CacheManagerAware,在cachemanager存在的情况下,使用缓存来提升性能。 加了几个字段,会话工厂,会话操作的dao,是否删除无效会话的控制项。 主要还是对上层的抽象方法:获取、新建会话的实现。
  • DefaultWebSessionManager extends DefaultSessionManager implements WebSessionManager

 

 

追加了web相关的功能,比如从cookie和url中获取sessionId等。

 

大体如此。

转载于:https://www.cnblogs.com/grey-wolf/p/8630438.html

你可能感兴趣的文章
SQL中varchar和nvarchar有什么区别?
查看>>
OpenCV矩阵运算总结
查看>>
Java Build Practice 4:Extend and Invoke Ant API
查看>>
[转] Transformer图解
查看>>
FreeBSD方式安装 MAC OSX
查看>>
Linux 根文件系统制作
查看>>
IOS--沙盒机制
查看>>
My.Ioc 的性能
查看>>
使用 JointCode.Shuttle 访问任意 AppDomain 的服务
查看>>
hdoj 1846 Brave Game(巴什博弈)
查看>>
Round #345 B. Beautiful Paintings(Div.2)
查看>>
51nod 1018排序
查看>>
sqlite的坑
查看>>
digitalocean --- How To Install Apache Tomcat 8 on Ubuntu 16.04
查看>>
linux swoole
查看>>
An Easy Problem?! - POJ 2826(求面积)
查看>>
【题解】[P4178 Tree]
查看>>
Jquery ui widget开发
查看>>
css3实现循环执行动画,且动画每次都有延迟
查看>>
更改git仓库地址
查看>>