您好,登錄后才能下訂單哦!
小編給大家分享一下如何實現SpringSecurity rememberme功能,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
功能原理分析
現在繼續跟蹤找到AbstractRememberMeServices對象的loginSuccess方法:
再點進去上面if判斷中的rememberMeRequested方法,還在當前類中:
如果上面方法返回true,就表示頁面勾選了記住我選項了。
繼續順著調用的方法找到PersistentTokenBasedRememberMeServices的onLoginSuccess方法:
注意name和value屬性的值不要寫錯哦!
先測試一下,認證通過后,關掉瀏覽器,再次打開頁面,發現還要認證!為什么沒有起作用呢?
這是因為remember me功能使用的過濾器RememberMeAuthenticationFilter默認是不開啟的!
開啟remember me過濾器
<security:remember-me token-validity-seconds="60"></security:remember-me>
說明:RememberMeAuthenticationFilter中功能非常簡單,會在打開瀏覽器時,自動判斷是否認證,如果沒有則
調用autoLogin進行自動認證。
remember me 安全性分析
記住我功能方便是大家看得見的,但是安全性卻令人擔憂。因為 Cookie畢竟是保存在客戶端的,很容易盜取,而且
cookie的值還與用戶名、密碼這些敏感數據相關,雖然加密了,但是將敏感信息存在客戶端,還是不太安全。那么
這就要提醒喜歡使用此功能的,用完網站要及時手動退出登錄,清空認證信息。
此外,SpringSecurity還提供了remember me的另一種相對更安全的實現機制 :在客戶端的cookie中,僅保存一個
無意義的加密串(與用戶名、密碼等敏感數據無關),然后在db中保存該加密串-用戶信息的對應關系,自動登錄
時,用cookie中的加密串,到db中驗證,如果通過,自動登錄才算通過。
持久化remember me信息
創建一張表,注意這張表的名稱和字段都是固定的,不要修改。
<security:remember-me token-validity-seconds="60" data-source-ref="dataSource" remember-me-parameter="remember-me"></security:remember-me>
CREATE TABLE `persistent_logins` ( `username` varchar(64) NOT NULL, `series` varchar(64) NOT NULL, `token` varchar(64) NOT NULL, `last_used` timestamp NOT NULL, PRIMARY KEY (`series`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
以上是“如何實現SpringSecurity rememberme功能”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。