我正在使用Sping Boot 3.1.2为应用程序编写测试。应用程序启用了csrf,但是当csrf打开时,测试中的授权失败,因此我只想在测试中关闭它。
我的安全配置目前看起来像这样:
@Bean
protected SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests(auth -> auth
.requestMatchers(openUrls).permitAll()
.anyRequest().hasAuthority(applicationRoleKey))
.oauth2ResourceServer(oauth -> oauth
.jwt(jwt -> jwt.jwtAuthenticationConverter(jwtAuthenticationConverter())));
return http.build();
}
失败的示例测试(得到406而不是400):
@Test
@WithMockUser(authorities = "user=admin")
void asAdmin_canGetPhoto() throws Exception {
mockMvc.perform(MockMvcRequestBuilders.get("/photo")).andExpect(status().isOk());
}
仅在测试时禁用CSRF的推荐方法是什么?我只能找到使用过时版本的Spring Security的解决方案。
感谢任何指导!
编辑:通过将.with(csrf())
添加到测试中解决。
1条答案
按热度按时间guicsvcw1#
通过将
.with(csrf())
添加到测试中而不是禁用测试的csrf解决了这个问题。