1. 程式人生 > >springSecurity的學習筆記--使用spring-Security完成“記住我”,單機session管理,叢集session管理,登出

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:

    -======基本就這樣吧!