springSecurity的學習筆記--使用spring-Security完成“記住我”,單機session管理,叢集session管理,登出
今天課外的大部分空餘時間都用來了整理springSecurity練習的筆記。 整理了一部分,還差一些這裡補上!
記住我功能要素:
springsecurity提供了一個記住我的功能。 它的大致原理是,攔截器檢測是否符合攔截條件,如果符合,則呼叫記住我的邏輯。 它的邏輯是,將此使用者的session與使用者資訊存入資料庫表中。 (因為記住我必須在有憑證的情況下進行儲存!。 )。
該過濾器為:
過濾的條件:
過濾的實現:
它有兩個關鍵: 第一,客戶端持有sessionId,第二,如果配有記住我的攔截器,所有的請求都會經該過濾器,在符合它的攔截條件時,均會使用cookie的該session嘗試進行匹配。
1.在過濾器鏈上註冊配置:(過濾器的定義由security提供)
2,測試,一切正常!
單機session管理的要素:
session的管理,包括session的超時,session的併發等。
session是伺服器容器本身就帶有的一個功能,用於彌補http協議無狀態的弊端。 session超時可通過配置server.session.timeout=?? 進行配置。 正如我們配置server.port一樣。無需我們提出半點質疑!
session的併發,主要包括客戶端的併發,以及服務端的session叢集管理。
客戶端併發的相關配置:
注意,session的管理也是基於過濾鏈的。 相關的過濾器包括 : ConcurrentSessionFilter,SessionManagementFilter,SessionRepositoryFilter。 均由框架提供!
1.在過濾器鏈上註冊配置:
2.相關bean的配置:(經過重構後的結構)
3.測試一切正常!。
session叢集管理的要素:
1.引入依賴:
2.相關配置:
spring.session.store-type=redis;
啟動redis服務端。 (注意,如果所有的都是本機,如地址,埠,連線的賬號與密碼都是本機的話,則可以不用配redis的相關配置)。 否則,需要配置redis的相關屬性。
3.測試,一切正常。
登出的要素:
1.過濾鏈註冊:
2.配置相關的bean:
-======基本就這樣吧!