13.SpringSecurity-添加記住我功能

前言

記住我功能主要講解爲3點:前端

  1. 記住我功能基本原理
  2. 記住我功能具體實現
  3. 記住我功能SpringSecurity源碼解析

內容

1.記住我功能基本原理

image.png
在用戶發送認證請求以後,或調用咱們以前說過的usernamePasswordAuthenticationFilter這個過濾器,認證成功以後會調用一個RemeberMeService服務;負責針對每一用戶生成一個Token,而後將token寫入到瀏覽器的Cookie裏面,同時會使用:TokenRepository將這個token寫入數據庫中。將Token寫入數據庫時候,同時會把用戶認證成功的用戶名一併寫入數據庫(此時用戶名和token是一一對應的)中由於咱們是在用戶認證成功以後作的,因此會將用戶信息寫入,下次用戶訪問的時候就不須要再次登陸了。當用戶下次請求的時候會通過過濾器鏈中的RemeberMeAuthenticationFilter(這個過濾器做用就是讀取cookie中token)而後交給RemeberMeService,RemeberMeService經過TokenRepository到數據庫去查詢這個Token數據庫裏面有沒有記錄。若是有記錄就去除用戶名,取出用戶名以後,就會去調用UserDetailsService,獲取用戶信息,而後把獲取的當前用戶信息放到SecurityContext裏面。這樣就把用戶登陸上了。web

另外再說一下:RemeberMeAuthenticationFilter在咱們的過濾器鏈中綠色過濾器中,他是在倒數第二個位置。前面是其餘的認證,其餘的認證都無法認證用戶信息的時候RemeberMeAuthenticationFilter嘗試去作認證。 spring

image.png

2.記住我功能具體實現

2.1前端頁面添加功能

image.png

2.2 配置TokenRepository

配置TokenRepository讀取數據庫
在spring-security-web項目中添加:數據庫

3. 記住我功能SpringSecurity源碼解析

相關文章
相關標籤/搜索