首頁 > Java > java教程 > 如何在Spring Security中為不同的應用部分設定多個HTTP安全配置?

如何在Spring Security中為不同的應用部分設定多個HTTP安全配置?

DDD
發布: 2024-12-29 18:09:17
原創
457 人瀏覽過

How to Configure Multiple HTTP Security Configurations in Spring Security for Different Application Sections?

Spring Security 中的多種HTTP 安全配置

在Spring Security 中,你可能會遇到不同的登入頁面和安全性設定需要不同的情況您的申請的各個部分。為了實現這一點,您可以利用 MultipleHttpSecurityConfig 方法。

在您的特定實例中,您已在使用 @EnableWebSecurity 註解的父類別中設定了兩個巢狀類別:ProviderSecurity 和 ConsumerSecurity。雖然 /admin/** 的安全配置按預期運行,但您發現受“/consumer/**”限制的頁面未按預期受到保護。

分析

您的問題是由於您的設定預設授權所有請求而引起的。這允許訪問所有頁面,無論定義的安全限制如何。要修正此問題,您需要明確限制對特定 URL 或請求模式的存取。

解決方案

要解決此問題,請執行以下步驟:

  1. 利用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()
                ...
    }
    登入後複製
  2. 同樣,在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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板