spring security 之 記住我功能

2021-10-19 12:58:53 字數 1624 閱讀 5328

記住我基本原理

usernamepasswordauthenticationfilter認證成功後會走successfulauthentication方法

然後經過successfulauthenticationremembermeservice其中有個tokenrepositorytokenrepository生成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系列之記住我 十二

有這樣乙個場景 有個使用者初訪並登入了你的 然而第二天他又來了,卻必須再次登入。於是就有了 記住我 這樣的功能來方便使用者使用,然而有一件不言自明的事情,那就是這種認證狀態的 曠日持久 早已超出了使用者原本所需要的使用範圍。這意味著,他們可以關閉瀏覽器,然後再關閉電腦,下週或者下個月,乃至更久以後再...