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 } }
要点:
在前面的示例中,出现问题的原因是第一个带有 /antMatcher 的配置(匹配所有 URL)覆盖了第二个配置,导致第二个配置的 URL 不受保护。通过将第一个配置的范围限制为仅 /admin/,第二个配置的 URL 可以获得适当的安全机制。
以上是为什么我的具有多个 HTTP 配置的 Spring Security 配置不起作用?的详细内容。更多信息请关注PHP中文网其他相关文章!