偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

[[398982]]

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

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

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

認證通過后執(zhí)行下面的邏輯

AbstractAuthenticationProcessingFilter.java

這里的successHandler默認是使用的如下handler。

SavedRequestAwareAuthenticationSuccessHandler.java

requestCache對象的實例是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對象進行了保存然后放到了session中,保存后再跳轉(zhuǎn)到登錄授權(quán)頁面。session不配置的情況下默認就是30分鐘。

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

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

在配置HttpSecurity時配置自定義sucessHandler,如下

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

 

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

2021-07-13 14:05:37

單點登錄頁面

2010-02-12 09:32:51

Windows 7修改登錄畫面

2024-10-14 17:18:27

2025-06-25 09:40:49

Windows登錄歡迎語系統(tǒng)

2015-02-12 15:33:43

微信SDK

2011-03-17 09:45:01

Spring

2023-12-04 07:27:54

SpringMVC方法

2024-01-23 13:13:09

2022-11-26 00:00:02

2015-01-14 15:06:48

定義相機

2018-07-06 15:58:34

SpringSchemaJava

2015-02-12 15:38:26

微信SDK

2020-11-25 11:20:44

Spring注解Java

2017-08-03 17:00:54

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

2022-06-20 08:26:39

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

2016-11-16 21:55:55

源碼分析自定義view androi

2016-12-26 15:25:59

Android自定義View

2011-06-23 10:49:13

Qt 自定義信號

2022-06-06 09:01:16

SwiftUI自定義導(dǎo)航

2010-10-25 16:05:07

oracle自定義函數(shù)
點贊
收藏

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