你好!
我刚刚将几个服务更新到SpringBoot 2.1.3 ,并观察到WebFlux和WebMVC与spring-security相结合的集成测试的不同行为 。
在这两种服务中都存在自定义的 SecurityConfig。
在 WebMVC 服务中,配置如下所示:
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
// custom config is here
}
}
在 WebFlux 服务中,配置如下所示:
@Configuration
@EnableWebFluxSecurity
public class SecurityConfiguration {
@Bean
public SecurityWebFilterChain springWebFilterChain(ServerHttpSecurity http) {
//custom config is here
}
}
当使用自定义 WebSecurityConfig 实现集成测试时,@WebMvcTest
会调用(在配置方法中放置断点)。但为了保持活跃,必须apply(SecurityMockMvcConfigurers.springSecurity())
调用MockMvcBuilder
.我认为这与此处提供的文档一致:
https://docs.spring.io/spring-security/site/docs/current/reference/htmlsingle/#test-mockmvc-setup
@WebFluxTest
当使用自定义 SecurityConfiguration实现集成测试时,不会调用org.springframework.security.config.annotation.web.reactive.WebFluxSecurityConfiguration
,而是使用标准。我必须@Import
在测试类上使用才能使自定义 SecurityConfiguration 正常工作。
我在文档中找不到任何描述@WebFluxTest
.我希望其@WebFluxTest
行为类似于@WebMvcTest
并使用自定义 SecurityConfiguration。