具有传统Web安全性的Spring WebFlux

时间:2018-12-19 08:54:08

标签: java spring spring-boot spring-security spring-webflux

我试图用传统的Web安全性(@EnableWebSecurity)测试Spring WebFlux。我使用了Netty的Tomcat intead。我收到了以下错误消息。

  

********************************应用程序无法启动

     
     

说明:

     

在类路径资源中定义的bean'springSecurityFilterChain'   [org / springframework / boot / actuate / autoconfigure / security / reactive / ReactiveManagementWebSecurityAutoConfiguration.class],   无法注册。那个名字的豆已经   在类路径资源中定义   [org / springframework / security / config / annotation / web / configuration / WebSecurityConfiguration.class]   并禁止覆盖。

     

操作:

     

考虑重命名其中一个bean或通过设置启用覆盖   spring.main.allow-bean-definition-overriding = true

然后将spring.main.allow-bean-definition-overriding=true添加到a​​pplication.properties中。有用。 但是它会生成新密码。我确定它没有读取我的自定义SecurityConfig适配器类。

我想知道为什么需要此属性值?

为什么添加属性后没有加载我的Adapter类?

这是我的SecurityConfig适配器类。

@Configuration
//@EnableWebFluxSecurity
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

@Override
    protected void configure(AuthenticationManagerBuilder auth)
        throws Exception {
PasswordEncoder encoder = PasswordEncoderFactories.createDelegatingPasswordEncoder();
        auth
        .inMemoryAuthentication()
          .withUser("user")
            .password(encoder.encode("user"))
            .authorities("ROLE_USER")
          .and()
          .withUser("woody")
            .password(encoder.encode("bullseye"))
            .authorities("ROLE_ADMIN");
    }

@Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
          .antMatchers("/hello")
          .authenticated()
          .antMatchers("/**")
          .permitAll()
          .and()
          .httpBasic();
    }

}

pom.xml

       <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-reactor-netty</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>io.projectreactor</groupId>
            <artifactId>reactor-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <!--<scope>provided</scope>-->
        </dependency>

0 个答案:

没有答案