首页 >Java >java教程 >为什么我的具有多个 HTTP 配置的 Spring Security 配置不起作用?

为什么我的具有多个 HTTP 配置的 Spring Security 配置不起作用?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-29 18:05:17748浏览

Why Doesn't My Spring Security Configuration with Multiple HTTP Configurations Work?

Spring Security:多个 HTTP 配置无法正常工作

人们可能会遇到一种情况,需要多个 HTTP 配置来定制登录页面和安全 URL访问,如以下场景所示:

@Configuration
@Order(1)
public static class ProviderSecurity extends WebSecurityConfigurerAdapter {
    // Security configuration for admin/* routes
}

@Configuration
@Order(2)
public static class ConsumerSecurity extends WebSecurityConfigurerAdapter {
    // Security configuration for consumer/* routes
}

但是,这种方法可能会导致只有一个的差异配置已激活。要解决这个问题,请参阅 Spring Security 参考指南:

@EnableWebSecurity
public class MultiHttpSecurityConfig {
    // Authentication configuration

    @Configuration
    @Order(1)
    public static class ApiWebSecurityConfigurationAdapter extends WebSecurityConfigurerAdapter {
        // Security configuration for /api/* routes
    }

    @Configuration
    public static class FormLoginWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
        // Security configuration for all other routes
    }
}

要点:

  • 照常配置身份验证。
  • 指定多个的处理顺序使用@Order进行配置。
  • 使用antMatcher根据URL限制特定配置的范围

在前面的示例中,出现问题的原因是第一个带有 /antMatcher 的配置(匹配所有 URL)覆盖了第二个配置,导致第二个配置的 URL 不受保护。通过将第一个配置的范围限制为仅 /admin/,第二个配置的 URL 可以获得适当的安全机制。

以上是为什么我的具有多个 HTTP 配置的 Spring Security 配置不起作用?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn