1. 程式人生 > >Shiro學習筆記之(六)Apache Shiro 會話管理

Shiro學習筆記之(六)Apache Shiro 會話管理

一、獲取session

    Shiro 中獲取session方法比較簡單


二、SessionManager  

    SessionManager為subject提供session管理,包括建立,刪除,失效,驗證等。SessionManager預設實現DefualtSessionManager.自定義SessionManager可在shiro.ini中配置。


2.1 Session Timeout

 session超時預設是30分鐘。自定義配置


注意單位是毫秒,1小時=1000*60*60,globalSessionTimeout 是預設所有的session的超時設定,也可以通過Per-Session Timeout 設定單獨的會話超時時間值。

2.2 Session Listeners

Shiro支援SessionListener對會話進行監聽,實現SessionManager介面(或者SessionListenerAdapter)來作出相應的處理。在shiro.ini中配置。當任何會話事件發生時,SessionListener都會被通知,不是針對某一個特定的會話。


2.3 Session Storage

當會話建立或者更新時,資料需要持久化到一個儲存位置,以便它能夠被應用程式訪問,會話失效時就會從儲存位置刪除。SessionManager 支援這些操作,SessionDAO反映了資料訪問物件設計模式,SessionDAO的作用是任何資料儲存進行通訊。

SessionDAO可以自定義,在[main]selction下配置


2.4 EHCache SessionDAO

 EHCache預設未啟用的,可以使用SessionManagement啟用EHCache。EHCache SessionDAO將會在記憶體中儲存會話,溢位時儲存到磁碟,如下配置使用EHCache。


2.5 Custom Session IDs

    SessionDAO 在建立一個新的會話時,使用一個內建的SessionIdGenerator元件來生產一個新的Session ID,並與建立的session例項繫結,然後通過sessionDAO儲存下來。

2.6 Session Validation & Scheduling

 Session 驗證,將無效的會話從會話資料儲存中刪除,保證儲存不會由於不能再次使用的會話而導致寫入超時。SessionManager支援SessionValidationScheduler,負責定期地驗證會話以確保它們是否需要清理。預設可用的SessionValidationScheduler是ExecutorServiceSessionValidationScheduler,預設每小時驗證一次,也可自行配置。


SessionValidationScheduler也可以自行實現,然後配置。如果希望禁止定期驗證session,可以這樣配置

securityManager.sessionManager.sessionValidationSchedulerEnabled = false,但是會話從會話資料儲存取回資料時仍然會被驗證,只是不會定期驗證了。