SpringSecurity rememberme功能實現(xiàn)過程解析
記住我功能原理分析
還記得前面咱們分析認證流程時,提到的記住我功能嗎?
現(xiàn)在繼續(xù)跟蹤找到AbstractRememberMeServices對象的loginSuccess方法:
再點進去上面if判斷中的rememberMeRequested方法,還在當前類中:
如果上面方法返回true,就表示頁面勾選了記住我選項了。
繼續(xù)順著調(diào)用的方法找到PersistentTokenBasedRememberMeServices的onLoginSuccess方法:
注意name和value屬性的值不要寫錯哦!
先測試一下,認證通過后,關(guān)掉瀏覽器,再次打開頁面,發(fā)現(xiàn)還要認證!為什么沒有起作用呢?
這是因為remember me功能使用的過濾器RememberMeAuthenticationFilter默認是不開啟的!
開啟remember me過濾器
<security:remember-me token-validity-seconds="60"></security:remember-me>
說明:RememberMeAuthenticationFilter中功能非常簡單,會在打開瀏覽器時,自動判斷是否認證,如果沒有則
調(diào)用autoLogin進行自動認證。
remember me 安全性分析
記住我功能方便是大家看得見的,但是安全性卻令人擔憂。因為 Cookie畢竟是保存在客戶端的,很容易盜取,而且
cookie的值還與用戶名、密碼這些敏感數(shù)據(jù)相關(guān),雖然加密了,但是將敏感信息存在客戶端,還是不太安全。那么
這就要提醒喜歡使用此功能的,用完網(wǎng)站要及時手動退出登錄,清空認證信息。
此外,SpringSecurity還提供了remember me的另一種相對更安全的實現(xiàn)機制 :在客戶端的cookie中,僅保存一個
無意義的加密串(與用戶名、密碼等敏感數(shù)據(jù)無關(guān)),然后在db中保存該加密串-用戶信息的對應關(guān)系,自動登錄
時,用cookie中的加密串,到db中驗證,如果通過,自動登錄才算通過。
持久化remember me信息
創(chuàng)建一張表,注意這張表的名稱和字段都是固定的,不要修改。
<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
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
java編程之基于SpringBoot框架實現(xiàn)掃碼登錄
本文將介紹基于SpringBoot + Vue + Android實現(xiàn)的掃碼登錄demo的總體思路,文中附含詳細示例代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-09-09Java中的CopyOnWriteArrayList原理詳解
這篇文章主要介紹了Java中的CopyOnWriteArrayList原理詳解,如源碼所示,CopyOnWriteArrayList和ArrayList一樣,都在內(nèi)部維護了一個數(shù)組,操作CopyOnWriteArrayList其實就是在操作內(nèi)部的數(shù)組,需要的朋友可以參考下2023-12-12Java實現(xiàn)Excel文件轉(zhuǎn)PDF(無水印無限制)
這篇文章主要為大家詳細介紹了如何利用Java語言實現(xiàn)Excel文件轉(zhuǎn)PDF的效果,并可以無水印、無限制。文中的示例代碼講解詳細,需要的可以參考一下2022-06-06Java中如何將?int[]?數(shù)組轉(zhuǎn)換為?ArrayList(list)
這篇文章主要介紹了Java中將?int[]?數(shù)組?轉(zhuǎn)換為?List(ArrayList),本文通過示例代碼給大家講解的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-12-12