記住我基本原理
usernamepasswordauthenticationfilter
認證成功後會走successfulauthentication
方法
然後經過successfulauthentication
的remembermeservice
其中有個tokenrepository
tokenrepository
生成token,首先將 token 寫入到瀏覽器的 cookie 中,然後將 token、認證成功的使用者名稱寫入到資料庫中
下次請求時,會經過remembermeauthenticationfilter
它會讀取 cookie 中的 token,交給remembermeservice
從資料庫中查詢記錄
如果存在記錄,會讀取使用者名稱並去呼叫userdetailsservice
,獲取使用者資訊,並將使用者資訊放入spring security 中,實現自動登陸。
具體實現:
步驟一:
建立persistent_logins
表
create table persistent_logins (username varchar(64) not null, series varchar(64) primary key, token varchar(64) not null, last_used timestamp not null);
這個表是統一的,springsecrity會自動在這個表儲存和讀取token資訊
步驟二:
登陸頁面新增記住我複選款(name必須是remeber-me)
下次自動登入
步驟三:配置websecurityconfig
1.加入下面的**,springsecurity會根據情況自動將token插入persistent_logins表和和從persistent_logins表讀取token
@autowired
private datasource datasource;
@bean
public persistenttokenrepository persistenttokenrepository()
2.設定httpsecurity
@autowired
列印spring security日誌配置
logging:level:
org:
springframework:
security: debug
SpringSecurity之自動登入
在spring security中加入自動登入功能 使用這種方案的前提是已經實現了乙個userdetailsservice 前面章節有實現 重啟服務後訪問login頁面會多出乙個remember me的多選框,勾選後登入檢視瀏覽器的cookie會多出乙個 name value remember me...
spring security之會話管理
會話固定攻擊 session fixation attack 是利用應用系統在伺服器的會話id固定不變機制,借助他人用相同的會話id獲取認證和授權,然後利用該會話id劫持他人的會話以成功冒充他人,造成會話固定攻擊。整個攻擊流程是 防禦固定攻擊非常簡單只需要在使用者登入之後重新生成新的session就...
Spring Security系列之記住我 十二
有這樣乙個場景 有個使用者初訪並登入了你的 然而第二天他又來了,卻必須再次登入。於是就有了 記住我 這樣的功能來方便使用者使用,然而有一件不言自明的事情,那就是這種認證狀態的 曠日持久 早已超出了使用者原本所需要的使用範圍。這意味著,他們可以關閉瀏覽器,然後再關閉電腦,下週或者下個月,乃至更久以後再...