Shiro會話管理

Shiro會話管理

1).Shiro提供了完整的企業級會話管理功能,不依賴於底層容器(如web容器tomcat),不管JavaSE還是JavaEE環境都可以用,提供了會話管理,會話事件監聽,會話存儲/持久化,容器無關的集羣,失效/過期支持,對web的透明支持,SSO單點登錄的支持等特性。

2).Shiro中的session的API中的方法跟HttpSession類似,以下是Shiro會話的API

1).Subject.getSession() : 即可獲取會話;其等價於Subject.getSession(true),如果當前沒有創建Session對象會創建一個;Subject.getSession(false),如果沒有創建Session則返回null

2).session.getId() : 獲取當前會話的唯一標識

3).session.getTimeout() & session.getTimeout(毫秒):獲取/設置當前session的過期時間

4).session.getStartTimestamp() &  session.getLastTimestamp() : 獲取會話的啓動時間及最後訪問時間;如果是JavaSE應用需要自己定期調用session.touch()去更新最後訪問時間;如果是web應用,每次進入ShiroFilter都會自動調用session.touch()來 更新最後訪問時間

5).session.touch() & session.stop() : 更新會話最後訪問時間及銷燬會話;當Subject.logout()時會自動調用stop方法來銷燬會話。如果在web中,調用HttpSession.invalidate()也會自動調用Shiro Session.stop方法進行銷燬Shiro的會話

6).session.setAttribute(key,val) & session.getAttribute(key) & session.reomveAttribute(key):設置/獲取/刪除會話屬性;在這個範圍內都可以對這個屬性進行操作

7).會話監聽器:會話監聽器用於監聽會話的創建,過期及停止事件

SessionDao(可以把session寫到數據庫中,對session進行增刪查改操作)

1).AbstractSessionDAO 提供了 SessionDAO 的基礎實現,如生成會話id等
2).CachingSessionDAO 提供了對開發者透明的會話緩存功能,需要設置相應的CacheManager
3).MemorySessionDAO 直接在內存中進行會話維護

4).EnterpriseCacheSessionDAO 提供了緩存功能的會話維護,默認情況下使用MapCache實現,內部使用ConcurrentHashMap保存緩存的會話。


發佈了75 篇原創文章 · 獲贊 8 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章