日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯網營銷解決方案
SpringSecurity自定義登錄成功后的邏輯

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

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

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

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

認證通過后執(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); 

 這里就是把當前的request對象進行了保存然后放到了session中,保存后再跳轉到登錄授權頁面。session不配置的情況下默認就是30分鐘。

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

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

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

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


名稱欄目:SpringSecurity自定義登錄成功后的邏輯
網址分享:http://www.dlmjj.cn/article/cosjhij.html