我正在使用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));
}
答案 0 :(得分:0)
-1的MaxAge表示您希望cookie在会话期间持续存在。您想将MaxAge设置为0。
从[API文档] [1]:
负值表示cookie不会持久存储,并且在Web浏览器退出时将被删除。零值将导致cookie被删除。
请您也可以点击此链接'https://www.baeldung.com/java-servlet-cookies-session'