日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
SpringSecurity自定義登錄成功后的邏輯

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

創(chuàng)新互聯(lián)建站堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的沂南網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

說(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ò)期了。


本文標(biāo)題:SpringSecurity自定義登錄成功后的邏輯
本文網(wǎng)址:http://www.5511xx.com/article/cosjhij.html