升级到 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());
}
使用
hasAuthority
代替 hasRole
方法应该可以解决您的问题。