正如所描述的here Spring Security弃用了我已经使用了一段时间的WebSecurityConfigurerAdapter
。我使用了基于组件的方法,并引入了SecurityFilterChain
和InMemoryUserDetailsManager
bean(请参见:commit),但是我的一个测试(使用@WithMockUser
)失败了。
当使用基于Spring Security组件的方法(SecurityFilterChain
)时,@WebMvcTest
测试是否与@WithMockUser
一起工作?
- 测试:https://github.com/pszemus/spring-security-test/blob/master/src/test/java/com/example/springsecuritytest/TestControllerTest.java
- 使用
WebSecurityConfigurerAdapter
的旧安全配置(所有测试均通过):https://github.com/pszemus/spring-security-test/blob/c323ce3af77bb067c7eef58fd933689ef97c082c/src/main/java/com/example/springsecuritytest/SecurityConfiguration.java - 使用基于组件方法的新安全配置(
givenMockedCredentials_shouldAccessSecuredEndpoint
测试失败,并显示消息:Status expected:<200> but was:<401>)的数据:https://github.com/pszemus/spring-security-test/blob/fb9b40194747a3b45678183276b81c582cb004a3/src/main/java/com/example/springsecuritytest/SecurityConfiguration.java
未通过测试的整个项目位于:https://github.com/pszemus/spring-security-test
1条答案
按热度按时间z0qdvdin1#
您应该在测试类中添加
@Import(YourSecurityConfiguration.class)
,@WebMvcTest
不会自动获取配置,因此您必须明确告诉它要使用哪个配置。