使用WebTestClient在springBootTest中禁用安全性

nai*_*bes 7 java spring spring-security spring-boot

2.1发行说明中的​​SpringBoot包含以下信息:

安全配置现在应用于WebTestClient.有关测试安全端点的更多信息,请参阅Spring Security参考文档的相关部分.

问题:

将SpringBoot从2.0.4更新到2.1.2后,我发现我的测试已经停止工作了.我正在使用@SpringBootTest我的REST测试.我WebTestClient无法到达服务器.我确实尝试了很多(例如从这里)来模拟或禁用安全性并仍然得到403 FORBIDDEN响应.

你有什么线索可能有什么不对吗?

WebTestClient按以下方式创建:

client = WebTestClient
  .bindToServer()
  .baseUrl("http://localhost:$port")
  .build()
Run Code Online (Sandbox Code Playgroud)

也试图排除SecurityAutoConfiguration.class.

Mac*_*ski 8

在某个黑暗的地方,在兔子洞的深处,我发现了这个:

@TestConfiguration
@Order(1)
public class SecurityConfiguration
  implements WebSecurityConfigurer<WebSecurity> {

  @Override
  public void init(WebSecurity builder) throws Exception {
    builder.ignoring().requestMatchers(
      new AntPathRequestMatcher("/**"));
  }

  @Override
  public void configure(WebSecurity builder) throws Exception {
  }

}
Run Code Online (Sandbox Code Playgroud)

记得在 中注册类@SpringBootTest,例如:

@SpringBootTest(
  classes = [SomeApplication, SecurityConfiguration],
  webEnvironment = RANDOM_PORT
)
Run Code Online (Sandbox Code Playgroud)

它并没有禁用 spring 安全性,但它使其透明。