Spring Boot 3.1升级-在集成测试中禁用CSRF

问题描述 投票:0回答:1

升级到 Spring Boot 3.1.5 后,我在集成测试中收到 403 错误。如何在测试中禁用 CSRF?

我尝试添加

csrf.disable()
,但仍然收到 403 错误。

测试中需要什么注释吗?

我也尝试添加

@WebMvcTest
.with(csrf())
,但没有运气。

  @Bean
  protected void configure(HttpSecurity http) throws Exception {
 
    http
      .addFilterBefore(new AuthFilter(), BasicAuthenticationFilter.class)
      .cors(cors -> cors.configurationSource(r -> config))
      .csrf(csrf -> csrf.disable())
      .headers(headers -> headers
        .frameOptions(frameOptions -> frameOptions.sameOrigin()))
      .csrf(AbstractHttpConfigurer::disable)
      .authorizeRequests(auth -> auth
        .requestMatchers("/actuator/**").hasRole("ACTUATOR")
        .requestMatchers("/api/v1/test").hasRole("xxx")
        .requestMatchers("/api/v1/test")
        .permitAll()
        .anyRequest().denyAll()
      ).httpBasic(Customizer.withDefaults());
  }
  
  @Test
  void demo() throws Exception {
    mockMvc.perform(post(url).contentType(APPLICATION_JSON).content(body)).andExpect(status().isOk());
  }
spring-boot csrf spring-boot-test
1个回答
0
投票

使用

hasAuthority
代替
hasRole
方法应该可以解决您的问题。

© www.soinside.com 2019 - 2024. All rights reserved.