如何實(shí)現(xiàn)SpringSecurityrememberme功能

小編給大家分享一下如何實(shí)現(xiàn)SpringSecurity rememberme功能,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

創(chuàng)新互聯(lián)IDC提供業(yè)務(wù):成都多線機(jī)房,成都服務(wù)器租用,成都多線機(jī)房,重慶服務(wù)器租用等四川省內(nèi)主機(jī)托管與主機(jī)租用業(yè)務(wù);數(shù)據(jù)中心含:雙線機(jī)房,BGP機(jī)房,電信機(jī)房,移動(dòng)機(jī)房,聯(lián)通機(jī)房。

功能原理分析

如何實(shí)現(xiàn)SpringSecurity rememberme功能

現(xiàn)在繼續(xù)跟蹤找到AbstractRememberMeServices對(duì)象的loginSuccess方法:

如何實(shí)現(xiàn)SpringSecurity rememberme功能

再點(diǎn)進(jìn)去上面if判斷中的rememberMeRequested方法,還在當(dāng)前類(lèi)中:

如何實(shí)現(xiàn)SpringSecurity rememberme功能

如果上面方法返回true,就表示頁(yè)面勾選了記住我選項(xiàng)了。

繼續(xù)順著調(diào)用的方法找到PersistentTokenBasedRememberMeServices的onLoginSuccess方法:

如何實(shí)現(xiàn)SpringSecurity rememberme功能

注意name和value屬性的值不要寫(xiě)錯(cuò)哦!

如何實(shí)現(xiàn)SpringSecurity rememberme功能

先測(cè)試一下,認(rèn)證通過(guò)后,關(guān)掉瀏覽器,再次打開(kāi)頁(yè)面,發(fā)現(xiàn)還要認(rèn)證!為什么沒(méi)有起作用呢?
這是因?yàn)閞emember me功能使用的過(guò)濾器RememberMeAuthenticationFilter默認(rèn)是不開(kāi)啟的!

開(kāi)啟remember me過(guò)濾器

<security:remember-me token-validity-seconds="60"></security:remember-me>

說(shuō)明:RememberMeAuthenticationFilter中功能非常簡(jiǎn)單,會(huì)在打開(kāi)瀏覽器時(shí),自動(dòng)判斷是否認(rèn)證,如果沒(méi)有則
調(diào)用autoLogin進(jìn)行自動(dòng)認(rèn)證。

如何實(shí)現(xiàn)SpringSecurity rememberme功能

remember me 安全性分析

記住我功能方便是大家看得見(jiàn)的,但是安全性卻令人擔(dān)憂。因?yàn)?Cookie畢竟是保存在客戶端的,很容易盜取,而且
cookie的值還與用戶名、密碼這些敏感數(shù)據(jù)相關(guān),雖然加密了,但是將敏感信息存在客戶端,還是不太安全。那么
這就要提醒喜歡使用此功能的,用完網(wǎng)站要及時(shí)手動(dòng)退出登錄,清空認(rèn)證信息。

此外,SpringSecurity還提供了remember me的另一種相對(duì)更安全的實(shí)現(xiàn)機(jī)制 :在客戶端的cookie中,僅保存一個(gè)
無(wú)意義的加密串(與用戶名、密碼等敏感數(shù)據(jù)無(wú)關(guān)),然后在db中保存該加密串-用戶信息的對(duì)應(yīng)關(guān)系,自動(dòng)登錄
時(shí),用cookie中的加密串,到db中驗(yàn)證,如果通過(guò),自動(dòng)登錄才算通過(guò)。

持久化remember me信息

創(chuàng)建一張表,注意這張表的名稱(chē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

如何實(shí)現(xiàn)SpringSecurity rememberme功能

以上是“如何實(shí)現(xiàn)SpringSecurity rememberme功能”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

網(wǎng)頁(yè)題目:如何實(shí)現(xiàn)SpringSecurityrememberme功能
標(biāo)題鏈接:http://bm7419.com/article30/jdiiso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(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)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化