shiro的sessionManager類繼承結構及主要類方法

shiro1.3.2web

sessionManage的做用是對會話進行管理。設計模式

1.類結構瀏覽器

2.主要接口介紹緩存

  • SessionManager:

包括兩個方法,一個是新建會話,一個是經過key獲取會話服務器

  • ValidatingSessionManager:

主要是對會話進行驗證的功能。web端服務器一般會維持會話信息,可是在瀏覽器直接關閉,用戶沒有手動退出的狀況下,服務器維護的該會話難以被手動清理。cookie

就須要服務端定時輪詢,清理過時的會話。session

  •  NativeSessionManager

提供會話的大部分功能。主要有:會話開始時間、最後訪問時間、是否有效、超時時長、更新會話、獲取會話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等。

 

大致如此。

相關文章
相關標籤/搜索