使用springSecurityFilterChain的Spring MockMvc中的空响应头
我为我的SpringMVC应用程序编写单元测试 这是我的mockMvc初始化代码:使用springSecurityFilterChain的Spring MockMvc中的空响应头,spring,spring-mvc,spring-security,spring-test,Spring,Spring Mvc,Spring Security,Spring Test,我为我的SpringMVC应用程序编写单元测试 这是我的mockMvc初始化代码: @Configuration public class SpringMockFactory { @Autowired private WebApplicationContext wac; @Autowired private FilterChainProxy springSecurityFilterChain; @Bean @Scope("prototype")
@Configuration
public class SpringMockFactory {
@Autowired
private WebApplicationContext wac;
@Autowired
private FilterChainProxy springSecurityFilterChain;
@Bean
@Scope("prototype")
public MockMvc getMockMvc() {
return webAppContextSetup(wac)
.addFilter(springSecurityFilterChain)
.build();
}
}
一切正常,但当我添加springSecurityFilterChain时,响应头总是空的(这很重要,因为我想检查Set Cookie头)
我使用此代码执行操作:
resultActions = mockMvc.perform(post("/api/login")
.contentType(MediaType.APPLICATION_FORM_URLENCODED)
.param("username", "sysadmin")
.param("password", "password")
).andDo(print());
这是andDo(print())的结果:
问题是,当我将springSecurityFilterChain与mockMvc一起使用时,为什么响应头是空的?以及如何读取它们?您可能需要将Spring安全配置添加到
MockMvc
对象中
例如:
mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).apply(springSecurity()).build();
springSecurity()
初始值设定项可在org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers
包中找到。您可以方便地静态导入它。
请注意,您需要org.springframework.security:spring安全性测试
dependency(我对4.0.1.RELEASE很在行)
参见示例(说教项目)
我不需要手动设置Spring Security过滤器链。我也有同样的问题…尝试测试不同的过滤器组合/等等,但没有成功。你尝试过我的答案吗?
mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).apply(springSecurity()).build();