微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spring MVC测试(安全集成测试),JSESSIONID不存在

我为我的春季启动应用程序创建了自定义登录表单.
在我的表单集成测试中,我想检查收到的cookie是否包含JSESSIONID和XSRF-TOKEN.

但是,我只收到了XSRF-TOKEN.

这是我的测试:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
@WebAppConfiguration
@IntegrationTest("server.port:0")
public class UserIT {

    @Autowired
    private WebApplicationContext context;
    @Autowired
    private FilterChainProxy springSecurityFilterChain;

    @Value("${local.server.port}")
    private Integer port;

    private mockmvc mockmvc;

    @Before
    public void setup() {
        mockmvc =
                mockmvcBuilders.webAppContextSetup(context).addFilters(springSecurityFilterChain)
                        .build();
    }

    @Test
    public void getUserInfotest() throws Exception {
        disableSslVerification();

        MvcResult result =
                mockmvc.perform(formLogin("/login").user("roy").password("spring")).andExpect(authenticated())
                        .andReturn();
        Cookie sessionId = result.getResponse().getCookie("JSESSIONID");
        Cookie token = result.getResponse().getCookie("XSRF-TOKEN");
}

安全配置:

@Override
    public void configure(HttpSecurity http) throws Exception {
        // @formatter:off   
        http
            //.httpBasic()
            //.and()
                .headers().frameOptions().disable()
            .and()
                .antMatcher("/**").authorizeRequests()
                .antMatchers("/actuator/health").permitAll()
                .antMatchers("/actuator/**").hasAuthority(Authority.Type.ROLE_ADMIN.getName())
                .antMatchers("/login**","/index.html","/home.html").permitAll()
                .anyRequest().authenticated()
            .and()
                .formLogin().loginPage("/login.jsp")
                    .usernameParameter("username")
                    .passwordParameter("password")
                    .loginProcessingUrl("/login")
                     .permitAll()
            .and()
                .logout().logoutSuccessUrl("/login.jsp").permitAll()
            .and()
                .csrf().csrftokenRepository(csrftokenRepository())
            .and()
                .addFilterafter(csrfheaderFilter(),CsrfFilter.class)
                .addFilterBefore(ssoFilter(),BasicAuthenticationFilter.class);
        // @formatter:on
    }

请帮助我获得所需的结果.

最佳答案
您也没有看到Set-Cookie标头.对我而言,这是mockmvc一个很大的局限.有关解决方法,请参阅Why does Spring MockMvc result not contain a cookie?.

原文地址:https://www.jb51.cc/spring/432373.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐