我使用springboot-starter-security时遇到问题。我想只保护不以" / api"开头的网址,所有网址如" / api"或" / api /"或" / api / **"一定不能保证。
在WebSecurityConfigClass中我有:
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/api*");
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("user").password("password").roles("USER");
}
在应用程序中,我有两个不同的控制器,webcontroller和restcontroller。目前还没有实现网络,但它必须解决我想要保护的网址,其余控制器管理我不需要身份验证的网址。 我有一个其他控制器的测试类,所有测试失败,因为他们期望200状态,但他们收到401.例如:
@Test
public void testStatus200() throws Exception{
mvc.perform(get("/api")).andExpect(status().isOk());
}
由于状态为401而不是200,此测试失败。为什么?
答案 0 :(得分:0)
我解决了,测试类没有使用websecurityconfig类。 我通过添加WebSecurityConfig的显式导入作为类注释来修复:
@RunWith(SpringRunner.class)
@WebMvcTest(controllers=ARestController.class)
@Import(WebSecurityConfig.class) // <---
public class ARestControllerTest { ... }