10.5 Remember-Me Authentication

5.5.1概覽

Remember-me與 UsernamePasswordAuthenticationFilter 一起使用拥坛,并通過 AbstractAuthenticationProcessingFilter 超類中的鉤子實現(xiàn)。它也應(yīng)用于 BasicAuthenticationFilter尘分。鉤子將在適當(dāng)?shù)臅r間調(diào)用具體的 RememberMeServices?猜惋。界面如下:

Authentication autoLogin(HttpServletRequest request, HttpServletResponse response);

void loginFail(HttpServletRequest request, HttpServletResponse response);

void loginSuccess(HttpServletRequest request, HttpServletResponse response,

? ? Authentication successfulAuthentication);

請參考JavaDoc以更全面地討論方法的作用,注意培愁,盡管在這個階段 AbstractAuthenticationProcessingFilter 只調(diào)用LoginFail()和LoginsAccess()方法著摔。每當(dāng) SecurityContextholder 不包含一個 Authentication 時,RememberMeAuthenticationFilter?就會調(diào)用 autologin() 方法竭钝。因此梨撞,此接口為基礎(chǔ)的remember-me實現(xiàn)提供了與身份驗證相關(guān)事件的充分通知雹洗,并在候選Web請求可能包含cookie并希望被記住時委托給實現(xiàn)。這種設(shè)計允許任何數(shù)量的“remember-me”實現(xiàn)策略卧波。上面我們已經(jīng)看到了Spring Security?提供了兩種實現(xiàn)时肿。我們依次看這些。

TokenBasedRememberMeServices

此實現(xiàn)支持第10.5.2節(jié) “Simple Hash-Based Token Approach”?????中描述的更簡單的方法港粱。TokenBasedRememberMeServices?生成一個RememberMeauthenticationToken螃成,由RememberMeauthenticationProvider?處理。此身份驗證提供程序和 TokenBasedRememberMeServices 之間共享key查坪。此外寸宏,TokenBasedRememberMeServices?需要一個 UserDetailsService?,它可以從中檢索用于簽名比較的用戶名和密碼偿曙,并生成 RememberMeAuthenticationToken?以包含正確的 GrantedAuthority s氮凝。應(yīng)用程序應(yīng)提供某種注銷命令,以使用戶請求以后使cookie失效望忆。TokenBasedRememberMeServices?還實現(xiàn)了Spring Security的 LogoutHandler?接口罩阵,因此可以與 LogoutHandler?一起使用,以便自動清除cookie启摄。

應(yīng)用程序上下文中啟用“記住我”服務(wù)所需的bean如下:

<bean id="rememberMeFilter" class=

"org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter">

<property name="rememberMeServices" ref="rememberMeServices"/>

<property name="authenticationManager" ref="theAuthenticationManager" />

</bean>

<bean id="rememberMeServices" class=

"org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices">

<property name="userDetailsService" ref="myUserDetailsService"/>

<property name="key" value="springRocks"/>

</bean>

<bean id="rememberMeAuthenticationProvider" class=

"org.springframework.security.authentication.RememberMeAuthenticationProvider">

<property name="key" value="springRocks"/>

</bean>

不要忘記將 RememberMeServices 實現(xiàn)添加到您的UsernamePasswordAuthenticationFilter.setRememberMeServices()屬性中稿壁,在AuthenticationManager.setProviders()列表中包含RememberMeAuthenticationProvider,并將RememberMeAuthenticationFilter添加到您的FilterChainProxy?中(通常在您的UsernamePasswordAuthenticationFilter之后)歉备。

PersistentTokenBasedRememberMeServices

此類的使用方式與 TokenBasedRememberMeServices相同傅是,但它還需要配置一個 PersistentTokenRepository?來存儲令牌。這里有兩種標(biāo)準(zhǔn)實現(xiàn)蕾羊。

\bullet InMemoryTokenRepositoryImpl喧笔,僅用于測試。

\bullet JDBCtokenRepositoryImpl肚豺,它將令牌存儲在數(shù)據(jù)庫中溃斋。

上面第10.5.3節(jié) “Persistent Token Approach”. 描述了數(shù)據(jù)庫模式界拦。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吸申,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子享甸,更是在濱河造成了極大的恐慌截碴,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蛉威,死亡現(xiàn)場離奇詭異日丹,居然都是意外死亡,警方通過查閱死者的電腦和手機蚯嫌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門哲虾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來丙躏,“玉大人,你說我怎么就攤上這事束凑∩孤茫” “怎么了?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵汪诉,是天一觀的道長废恋。 經(jīng)常有香客問我,道長扒寄,這世上最難降的妖魔是什么鱼鼓? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮该编,結(jié)果婚禮上迄本,老公的妹妹穿的比我還像新娘。我一直安慰自己课竣,他們只是感情好岸梨,可當(dāng)我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著稠氮,像睡著了一般曹阔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上隔披,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天赃份,我揣著相機與錄音,去河邊找鬼奢米。 笑死抓韩,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鬓长。 我是一名探鬼主播谒拴,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼涉波!你這毒婦竟也來了英上?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤啤覆,失蹤者是張志新(化名)和其女友劉穎苍日,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體窗声,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡相恃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了笨觅。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拦耐。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡耕腾,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出杀糯,到底是詐尸還是另有隱情幽邓,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布火脉,位于F島的核電站牵舵,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏倦挂。R本人自食惡果不足惜畸颅,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望方援。 院中可真熱鬧没炒,春花似錦、人聲如沸犯戏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽先匪。三九已至种吸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間呀非,已是汗流浹背坚俗。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留岸裙,地道東北人猖败。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像降允,于是被迫代替她去往敵國和親恩闻。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內(nèi)容

  • sessionId 解析策略 SpringSession中對于sessionId的解析相關(guān)的策略是通過HttpSe...
    Java高級進階閱讀 1,324評論 0 0
  • 會話(Session)跟蹤是Web程序中常用的技術(shù)剧董,用來跟蹤用戶的整個會話幢尚。常用的會話跟蹤技術(shù)是Cookie與Se...
    chinariver閱讀 5,617評論 1 49
  • 1、不安全的隨機數(shù)生成送滞,在CSRF TOKEN生成侠草、password reset token生成等,會造成toke...
    nightmare丿閱讀 3,692評論 0 1
  • 本文包括:1犁嗅、Filter簡介2、Filter是如何實現(xiàn)攔截的晤碘?3褂微、Filter開發(fā)入門4功蜓、Filter的生命周期...
    廖少少閱讀 7,272評論 3 56
  • 在Web應(yīng)用程序中的身份驗證 現(xiàn)在讓我們來看看你在Web應(yīng)用程序中使用Spring Security的情況(不啟用...
    kuisasa閱讀 1,252評論 0 1