spring-security 在Spring引导中使用@EnableWebFluxSecurity时出错

6ss1mwsb  于 2022-11-11  发布在  Spring
关注(0)|答案(2)|浏览(317)

我正在尝试设置一个简单的Spring Boot 应用程序。如果我不使用@EnableWebFluxSecurity注解,它可以启动。

@Configuration
    @EnableWebFluxSecurity
    open class ArticleWebSecurityConfig {

        @Bean
        open fun springSecurityFilterChain(http: ServerHttpSecurity): SecurityWebFilterChain = http
            .csrf().disable()
            .authorizeExchange()
            .anyExchange()
            .permitAll()
            .and()
            .build()
    }

启动时出现以下错误:
配置服务器Web服务器应用程序上下文:上下文初始化期间出现异常错误-取消刷新尝试:异常错误:创建在类路径资源[org/springframework/boot/autoconfigure/security/servlet/SpringBootWebSecurityConfiguration.class]中定义的名为'defaultSecurityFilterChain'的Bean时出错:未满足通过方法“defaultSecurityFilterChain”参数0表示的依赖项;嵌套异常是一个嵌套的异常。没有这样的Bean定义异常:没有类型为“org.springframework.security.config.annotation.web.builders.HttpSecurity”的合格Bean可用:至少应有1个符合自动连接候选条件的Bean。依赖关系注解:{}

描述

无法找到“org.springframework. Boot .autoconfigure.security.servlet.SpringBootWebSecurityConfiguration”中方法defaultSecurityFilterChain的参数0所需的类型为“org.springframework.security.config.annotation.web.builders.HttpSecurity”的Bean。
动作:
请考虑在配置中定义类型为“org.springframework.security.config.annotation.web.builders.HttpSecurity”的Bean。
进程已结束,退出代码为1
我使用了下面的@Bean,但仍然得到相同的错误。

@Throws(Exception::class)
    @Bean
    open fun configure(http: HttpSecurity) {
        http
            .authorizeRequests()
            .anyRequest()
            .authenticated()
            .and()
            .httpBasic()
    }

这些是我的依赖项

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jetty</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>
wqsoz72f

wqsoz72f1#

我遇到了同样的问题。你的一些依赖项带来了spring-boot-starter-web。你需要找到谁在使用mvn dependency:tree,并在你的pom.xml中排除它。

<exclusions>
    <exclusion>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </exclusion>
 </exclusions>

并且还将

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
</dependency>
2mbi3lxu

2mbi3lxu2#

您需要根据this answer@EnableWebFluxSecurity@Configuration相加。

相关问题