如何从Cookie中删除JSESSIONID?

时间:2019-03-22 07:45:53

标签: java spring spring-security

我正在使用Spring Boot,Spring MVC和Spring Security。我添加了JWT授权,因此我需要使我的应用程序会话变为无状态,因此我向安全配置中添加了相应的参数:

 http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);

但是,当我对我的应用程序发出任何请求时,我会得到JSESSIONID作为cookie。我试图通过将以下代码添加到我的jwt过滤器中来解决问题:

    Cookie[] cookies = httpServletRequest.getCookies();
    if(cookies!=null)
        for (int i = 0; i < cookies.length; i++) {
            cookies[i].setMaxAge(0);
            httpServletResponse.addCookie(cookies[i]);
        }

但是它没有帮助,所以如何最终将其删除?

我的完整安全密码:

@Override
public void configure(HttpSecurity http) throws Exception {

    http.csrf().disable();

    http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);

    http.authorizeRequests()
            .antMatchers("/user/login").permitAll().antMatchers("/user/get/**").hasRole(Role.BOT.toString()).antMatchers("/", "/login**","/callback/", "/webjars/**", "/error**")
            .permitAll().anyRequest().authenticated();


  http.apply(new JwtFilterConfiguer(provider));



}

1 个答案:

答案 0 :(得分:0)

-1的MaxAge表示您希望cookie在会话期间持续存在。您想将MaxAge设置为0。

从[API文档] [1]:

负值表示cookie不会持久存储,并且在Web浏览器退出时将被删除。零值将导致cookie被删除。

请您也可以点击此链接'https://www.baeldung.com/java-servlet-cookies-session'