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等。
大致如此。