Spring Security 中的多種HTTP 安全配置
在Spring Security 中,你可能會遇到不同的登入頁面和安全性設定需要不同的情況您的申請的各個部分。為了實現這一點,您可以利用 MultipleHttpSecurityConfig 方法。
在您的特定實例中,您已在使用 @EnableWebSecurity 註解的父類別中設定了兩個巢狀類別:ProviderSecurity 和 ConsumerSecurity。雖然 /admin/** 的安全配置按預期運行,但您發現受“/consumer/**”限制的頁面未按預期受到保護。
分析
您的問題是由於您的設定預設授權所有請求而引起的。這允許訪問所有頁面,無論定義的安全限制如何。要修正此問題,您需要明確限制對特定 URL 或請求模式的存取。
解決方案
要解決此問題,請執行以下步驟:
利用ProviderSecurity 配置中的antMatcher 方法定義它所應用的URL模式至:
@Configuration @Order(1) public static class ProviderSecurity extends WebSecurityConfigurerAdapter{ @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/", "/home").permitAll() .antMatchers("/admin/login").permitAll() .anyRequest().hasRole("BASE_USER") // Restrict all other URLs .and() ... }
同樣,在ConsumerSecurity 配置中,指定應保護的URL 模式:
@Configuration @Order(2) public static class ConsumerSecurity extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/consumer/login").permitAll() .anyRequest().hasRole("BASE_USER") // Restrict all other URLs .and() ... }
透過限制存取對於特定的URL 模式,您可以為您的應用程式強制執行預期的安全性。
以上是如何在Spring Security中為不同的應用部分設定多個HTTP安全配置?的詳細內容。更多資訊請關注PHP中文網其他相關文章!