小編給大家分享一下如何實現(xiàn)SpringSecurity rememberme功能,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創(chuàng)新互聯(lián)IDC提供業(yè)務(wù):成都多線機房,成都服務(wù)器租用,成都多線機房,重慶服務(wù)器租用等四川省內(nèi)主機托管與主機租用業(yè)務(wù);數(shù)據(jù)中心含:雙線機房,BGP機房,電信機房,移動機房,聯(lián)通機房。
功能原理分析
現(xiàn)在繼續(xù)跟蹤找到AbstractRememberMeServices對象的loginSuccess方法:
再點進去上面if判斷中的rememberMeRequested方法,還在當(dāng)前類中:
如果上面方法返回true,就表示頁面勾選了記住我選項了。
繼續(xù)順著調(diào)用的方法找到PersistentTokenBasedRememberMeServices的onLoginSuccess方法:
注意name和value屬性的值不要寫錯哦!
先測試一下,認(rèn)證通過后,關(guān)掉瀏覽器,再次打開頁面,發(fā)現(xiàn)還要認(rèn)證!為什么沒有起作用呢?
這是因為remember me功能使用的過濾器RememberMeAuthenticationFilter默認(rèn)是不開啟的!
開啟remember me過濾器
<security:remember-me token-validity-seconds="60"></security:remember-me>
說明:RememberMeAuthenticationFilter中功能非常簡單,會在打開瀏覽器時,自動判斷是否認(rèn)證,如果沒有則
調(diào)用autoLogin進行自動認(rèn)證。
remember me 安全性分析
記住我功能方便是大家看得見的,但是安全性卻令人擔(dān)憂。因為 Cookie畢竟是保存在客戶端的,很容易盜取,而且
cookie的值還與用戶名、密碼這些敏感數(shù)據(jù)相關(guān),雖然加密了,但是將敏感信息存在客戶端,還是不太安全。那么
這就要提醒喜歡使用此功能的,用完網(wǎng)站要及時手動退出登錄,清空認(rèn)證信息。
此外,SpringSecurity還提供了remember me的另一種相對更安全的實現(xiàn)機制 :在客戶端的cookie中,僅保存一個
無意義的加密串(與用戶名、密碼等敏感數(shù)據(jù)無關(guān)),然后在db中保存該加密串-用戶信息的對應(yīng)關(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
以上是“如何實現(xiàn)SpringSecurity rememberme功能”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
網(wǎng)頁題目:如何實現(xiàn)SpringSecurityrememberme功能
標(biāo)題鏈接:http://www.rwnh.cn/article30/jdiiso.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機網(wǎng)站建設(shè)、企業(yè)建站、自適應(yīng)網(wǎng)站、網(wǎng)站導(dǎo)航、服務(wù)器托管、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)