日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

cas登录成功后不跳转成功页面_SpringSecurity用户登录成功后页面跳转原理剖析

發布時間:2025/3/15 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cas登录成功后不跳转成功页面_SpringSecurity用户登录成功后页面跳转原理剖析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Spring Security 框架在用戶成功登錄后的處理邏輯,相對來說比較復雜,比較繞,下面我們就關鍵邏輯,進行相關分析。

首先,框架默認的 AuthenticationSuccessHandler SavedRequestAwareAuthenticationSuccessHandler。

判斷當前Request是否緩存(另外需要看 Spring Security 是否開啟了 Request 緩存,默認是開啟的)。

...... SavedRequest savedRequest = requestCache.getRequest(request, response);if (savedRequest == null) { super.onAuthenticationSuccess(request, response, authentication); return;}......

如果 Spring Security 關閉了 Request 緩存,或者當前 Request 并沒有被緩存,那么就走默認的認證成功邏輯

否則,繼續根據 alwaysUseDefaultTargetUrl 判斷是否永遠重定向到 defaultTargetUrl;亦或是,如果配置了targetUrlParameter 且當前 request 存在該參數值,那么,從緩存中移除當前request,并走默認的認證成功邏輯。

...... String targetUrlParameter = getTargetUrlParameter();if (isAlwaysUseDefaultTargetUrl() || (targetUrlParameter != null && StringUtils.hasText(request.getParameter(targetUrlParameter)))) { requestCache.removeRequest(request, response); super.onAuthenticationSuccess(request, response, authentication); return;} ......

以上情況都不滿足,即 Spring Security 開啟了 Request 緩存,且當前 request 被緩存了,框架即重定向到緩存 request 對應的地址

// Use the DefaultSavedRequest URLString targetUrl = savedRequest.getRedirectUrl();logger.debug("Redirecting to DefaultSavedRequest Url: " + targetUrl);getRedirectStrategy().sendRedirect(request, response, targetUrl);

默認的認證成功邏輯,也不復雜,就是判斷要重定向的地址這個邏輯,比較繁瑣。

protected String determineTargetUrl(HttpServletRequest request, HttpServletResponse response) { if (isAlwaysUseDefaultTargetUrl()) { return defaultTargetUrl; } // Check for the parameter and use that if available String targetUrl = null; if (targetUrlParameter != null) { targetUrl = request.getParameter(targetUrlParameter); if (StringUtils.hasText(targetUrl)) { logger.debug("Found targetUrlParameter in request: " + targetUrl); return targetUrl; } } if (useReferer && !StringUtils.hasLength(targetUrl)) { targetUrl = request.getHeader("Referer"); logger.debug("Using Referer header: " + targetUrl); } if (!StringUtils.hasText(targetUrl)) { targetUrl = defaultTargetUrl; logger.debug("Using default Url: " + targetUrl); } return targetUrl;}

簡而言之,就是如果 alwaysUseDefaultTargetUrl 為true,則重定向 defaultTargetUrl;如果配置了 targetUrlParameter 且其對應的值不為空,則重定向到該地址;如果配置的 useReferertrue 且其值不為空,則重定向到該地址;否則,則重定向到 defaultTargetUrl

另外,針對成功登錄后的這段復雜邏輯,畫了一個流程圖,可以參照這些關鍵代碼,加深一下理解

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的cas登录成功后不跳转成功页面_SpringSecurity用户登录成功后页面跳转原理剖析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。