spring-security 一个Spring Boot 项目中的两个SecurityConfig类

ilmyapht  于 2022-11-11  发布在  Spring
关注(0)|答案(3)|浏览(316)

我正在使用的外部库中已经有SecurityConfig类。
我希望有另一个SecurityConfig类,以便使用addFilterBefore和addFilterAfter在我的项目中注册更多的过滤器。
我只是在我的项目中添加了下面的内容,

@Configuration
@EnableWebMvcSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
public class MySecurityConfig extends WebSecurityConfigurerAdapter {       
}

org.springframework.beans.factory.BeanCreationException:创建名为“org.springframework.security.config.annotation.web.configuration. Web安全配置”的Bean时出错:插入自动连接的依赖项失败;嵌套的异常是java.lang.IllegalStateException:WebSecurityConfigurers上的@顺序必须是唯一的。顺序100已被使用,因此也无法在com.pearson.springtools.config.SecurityConfig$$EnhancerBySpringCGLIB$$f0407fdb@7326eb0d上使用。

ghhaqwfi

ghhaqwfi1#

我有同样的问题,应用@订单(99)对您的网络安全它会修复。

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
@EnableAutoConfiguration(exclude = {
        org.activiti.spring.boot.RestApiAutoConfiguration.class,
        org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration.class,
        org.activiti.spring.boot.SecurityAutoConfiguration.class})
@ComponentScan(basePackages = {"com.onlineBankingApplication"})
@Order(99)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
cxfofazt

cxfofazt2#

一次只能使用WebSecurityConfigurerAdapter。如果要在同一配置中使用多个WebSecurityConfigurerAdapter,则必须至少在其中一个WebSecurityConfigurerAdapter上添加@order注解,以指定考虑它们的顺序。若要使用自定义WebSecurityConfigurerAdapter,请使其具有最高的顺序。

@Configuration
@EnableWebMvcSecurity
@Order(Ordered.HIGHEST_PRECEDENCE)
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
public class MySecurityConfig extends WebSecurityConfigurerAdapter {       
}
nzrxty8p

nzrxty8p3#

Sping Boot 已在根目录下使用WebSecurityConfigurerAdapter。它不允许为第二个WebSecurityConfigurerAdapter给予相同的顺序。为第二个WebSecurityConfigurerAdapter提供不同的顺序(例如order(1000))解决了我的问题。
示例代码:

@Configuration
@EnableWebSecurity
@Order(1000)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
   ...
}

相关问题