自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Spring Security 自定義登錄成功后的邏輯

開(kāi)發(fā) 項(xiàng)目管理
我們有個(gè)項(xiàng)目是基于NW.js,用戶登錄是通過(guò)Spring Security來(lái)實(shí)現(xiàn)的。我們?cè)趎w.js環(huán)境下做了一個(gè)校驗(yàn),如果用戶2小時(shí)內(nèi)沒(méi)有任何的操作那么系統(tǒng)將自動(dòng)調(diào)整到登錄頁(yè)面;這樣就出現(xiàn)了問(wèn)題,我們有很多的用戶是7*24小時(shí)不關(guān)電腦的。

[[398982]]

環(huán)境:Spring Boot 2.2.11.RELEASE + Spring Security5.2.7

說(shuō)下背景:我們有個(gè)項(xiàng)目是基于NW.js,用戶登錄是通過(guò)Spring Security來(lái)實(shí)現(xiàn)的。我們?cè)趎w.js環(huán)境下做了一個(gè)校驗(yàn),如果用戶2小時(shí)內(nèi)沒(méi)有任何的操作那么系統(tǒng)將自動(dòng)調(diào)整到登錄頁(yè)面;這樣就出現(xiàn)了問(wèn)題,我們有很多的用戶是7*24小時(shí)不關(guān)電腦的。當(dāng)用戶下班2小時(shí)后系統(tǒng)就自動(dòng)跳轉(zhuǎn)到了登錄頁(yè)面,第二天用戶上班了后登錄系統(tǒng)調(diào)不到之前的操作頁(yè)面。用戶天天投訴。其實(shí)當(dāng)我們?cè)L問(wèn)需要用戶認(rèn)證的頁(yè)面時(shí)沒(méi)登錄情況下都會(huì)跳到登錄頁(yè)如果30分鐘內(nèi)什么都不操作同樣也是跳不回去的。

基于上面的問(wèn)題后來(lái)跟蹤了下源碼發(fā)現(xiàn)Spring Security是通過(guò)session來(lái)保存之前的請(qǐng)求的所有相關(guān)信息,源碼如下:

認(rèn)證通過(guò)后執(zhí)行下面的邏輯

AbstractAuthenticationProcessingFilter.java

這里的successHandler默認(rèn)是使用的如下handler。

SavedRequestAwareAuthenticationSuccessHandler.java

requestCache對(duì)象的實(shí)例是HttpSessionRequestCache

HttpSessionRequestCache.java部分源碼

  1. DefaultSavedRequest savedRequest = new DefaultSavedRequest(request,portResolver); 
  2. if (createSessionAllowed || request.getSession(false) != null) { 
  3.     request.getSession().setAttribute(this.sessionAttrName, savedRequest); 
  4.     logger.debug("DefaultSavedRequest added to Session: " + savedRequest); 

 這里就是把當(dāng)前的request對(duì)象進(jìn)行了保存然后放到了session中,保存后再跳轉(zhuǎn)到登錄授權(quán)頁(yè)面。session不配置的情況下默認(rèn)就是30分鐘。

當(dāng)時(shí)為了簡(jiǎn)單快速解決問(wèn)題,我之間吧session的有效性調(diào)整了1天時(shí)間,安靜了一段時(shí)間后,以為沒(méi)事了。萬(wàn)萬(wàn)沒(méi)想到后來(lái)有幾個(gè)用戶有投訴了o(╥﹏╥)o,大概了解了下他們說(shuō)有時(shí)候幾天才用一次系統(tǒng)(就這樣他們還是不關(guān)電腦)。。。沒(méi)辦法只能繼續(xù)改代碼了。

通過(guò)上面貼的源碼也知道了就是從session獲取到之前的request對(duì)象然后進(jìn)行了重定向。

在配置HttpSecurity時(shí)配置自定義sucessHandler,如下

nw.js在做跳轉(zhuǎn)的時(shí)候,我把用戶之前的操作頁(yè)面地址記錄下來(lái)作為一個(gè)參數(shù)傳遞。這樣就不怕session過(guò)期了。

 

責(zé)任編輯:姜華 來(lái)源: 今日頭條
相關(guān)推薦

2021-07-13 14:05:37

單點(diǎn)登錄頁(yè)面

2010-02-12 09:32:51

Windows 7修改登錄畫(huà)面

2024-10-14 17:18:27

2023-12-04 07:27:54

SpringMVC方法

2015-02-12 15:33:43

微信SDK

2024-01-23 13:13:09

2022-11-26 00:00:02

2015-01-14 15:06:48

定義相機(jī)

2015-02-12 15:38:26

微信SDK

2017-08-03 17:00:54

Springmvc任務(wù)執(zhí)行器

2022-06-20 08:26:39

Spring容器類(lèi)型轉(zhuǎn)換

2011-03-17 09:45:01

Spring

2016-12-26 15:25:59

Android自定義View

2018-07-06 15:58:34

SpringSchemaJava

2021-09-24 09:52:13

登陸頁(yè)面注冊(cè)流程設(shè)計(jì)

2022-09-06 08:40:33

應(yīng)用系統(tǒng)登錄方式Spring

2022-06-27 08:16:34

JSON格式序列化

2020-11-25 11:20:44

Spring注解Java

2023-05-30 07:56:23

代碼軟件開(kāi)發(fā)

2011-12-16 14:23:51

Java
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)