shiro1.3.2web
sessionManage的做用是对会话进行管理。设计模式
1.类结构浏览器
2.主要接口介绍缓存
包括两个方法,一个是新建会话,一个是经过key获取会话服务器
主要是对会话进行验证的功能。web端服务器一般会维持会话信息,可是在浏览器直接关闭,用户没有手动退出的状况下,服务器维护的该会话难以被手动清理。cookie
就须要服务端定时轮询,清理过时的会话。session
提供会话的大部分功能。主要有:会话开始时间、最后访问时间、是否有效、超时时长、更新会话、获取会话host、中止会话、设置与获取会话相关的属性等。其中会话的attribute能够用来在登陆成功后,手动存储用户相关信息。性能
3.主要的几个实现类url
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等。
大致如此。