我试图用传统的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
添加到application.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>