首頁 >Java >java教程 >當 Spring Security 中只有一個 HTTP 配置有效時,如何排除多個 HTTP 配置的故障?

當 Spring Security 中只有一個 HTTP 配置有效時,如何排除多個 HTTP 配置的故障?

DDD
DDD原創
2024-12-04 19:29:12121瀏覽

How to Troubleshoot Multiple HTTP Configs in Spring Security When Only One Works?

Spring Security 中的多個HTTP 配置:故障排除

您在Spring Security 中使用多個HTTP 配置時遇到問題,特別是在保護不同的HTTP 設定時遇到問題URL 和登入頁面。以下是問題及其解決方案的細分:

問題:
您配置了兩個HTTP 配置,一個用於管理員訪問,另一個用於消費者訪問。但是,只有管理員安全性有效,而 /consumer/** 下的頁面仍然不安全,沒有登入重定向。

解決方案:
要解決此問題,關鍵是了解Spring Security 中的評估順序:

  1. 身份驗證管理: 設定AuthenticationManagerBuilder
  2. 多個HTTP 安全設定:

    • 建立多個擴充WebSecurityConfigurerAdapter 的內部類,每個內部類註解來指定優先權.
    • 使用antMatcher 將每個HttpSecurity配置的適用性限制為特定URL。
  3. URL 優先權:

    • 具有最高@Order 值的HttpSecurity 配置(或預設值「last」)將首先應用。
    • 如果沒有指定 antMatcher,則設定將適用於所有 URL (/**)。
  4. 配置結構:

    • 您案例中的第一個配置是匹配所有URL (/**) ,意味著它正在捕獲所有請求。
    • 因為它只保護/admin/,其他 URL(包括 /consumer/)是隱式允許的。
    • 因此永遠不會達到第二個配置。

要解決此問題,請確保首先透過賦予消費者安全配置更高的 @Order 值來對其進行評估。此外,為這兩種配置指定 antMatcher,以限制它們對所需 URL 的適用性。

透過執行下列步驟,您可以有效地配置多個 HTTP 安全性配置,並在 Spring Security 應用程式中保護不同的 URL 群組。

以上是當 Spring Security 中只有一個 HTTP 配置有效時,如何排除多個 HTTP 配置的故障?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn