使用WebTestClient禁用springBootTest中的安全性

时间:2019-01-30 14:58:38

标签: java spring spring-boot spring-security

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

  

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

问题:

将SpringBoot从 2.0.4 更新到 2.1.2 后,我发现我的测试已停止工作。我正在使用@SpringBootTest进行REST测试。我的WebTestClient无法访问服务器。我做了很多尝试(例如来自here的尝试) 模拟或禁用安全性并仍然得到403 FORBIDDEN响应。

您有什么线索可能会出错吗?

我通过以下方式创建WebTestClient

client = WebTestClient
  .bindToServer()
  .baseUrl("http://localhost:$port")
  .build()

还尝试排除SecurityAutoConfiguration.class

2 个答案:

答案 0 :(得分:2)

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

@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 {
  }

}

请在@SpringBootTest中注册班级,例如:

@SpringBootTest(
  classes = [SomeApplication, SecurityConfiguration],
  webEnvironment = RANDOM_PORT
)

它不会禁用spring安全性,但会使其透明。

答案 1 :(得分:0)

通过将"ABC" --> "DEF" True "BIKE" --> "FGEH" True "Alex"--> "BoB" --> False duplicate characters B and different size length. "Mom"---> "DaD" --> False duplicate letters D. static void match(String str1, String str2){ char[] inp1 = str1.toCharArray(); char[] inp2 = str2.toCharArray(); for (int i = 0; i < str1.length(); i++) { for (int j = 0; j < str2.length(); j++) { if (inp1[i] == inp[j]) { 的{​​{1}}标志设置为secure,我发现了类似问题的解决方法。

赞:

false