Java invalidateHttpSession在Spring security中做什么?
我在理解Java invalidateHttpSession在Spring security中做什么?,java,spring,Java,Spring,我在理解JSessionId及其工作原理方面有问题 我正在为我的web应用程序实现一个/logoutRest端点: http .csrf().disable() .authorizeRequests() .anyRequest().authenticated() .and() .logout() .logoutUrl("/logout") .invali
JSessionId
及其工作原理方面有问题
我正在为我的web应用程序实现一个/logout
Rest端点:
http
.csrf().disable()
.authorizeRequests()
.anyRequest().authenticated()
.and()
.logout()
.logoutUrl("/logout")
.invalidateHttpSession(true)
.logoutSuccessHandler(new HttpStatusReturningLogoutSuccessHandler(HttpStatus.OK))
.and()
.addFilterBefore(
new JWTAuthenticationFilter(userDetailsServiceBean()),
UsernamePasswordAuthenticationFilter.class);
当我对/logout
进行POST调用时,我仍然从服务器的响应中获得JSESSIONID
cookie。当我调用需要身份验证的端点时:
@RequestMapping(path="/greeting",method=RequestMethod.POST)
public Greeting doGreeting(Principal principal, SecurityContextHolder auth) {
String userId = principal.getName();
Greeting greeting = new Greeting(counter.incrementAndGet(), String.format(template, userId));
return greeting;
}
我仍然可以让原则
工作。JSESSIONID
的用途是什么?它与身份验证方法相比如何
注意:我使用JWT进行身份验证。我在请求的头中发送一个JWT令牌 如果您处于无状态环境(JWT),为什么要使用JSESSIONID?顺便说一句,如果您使用的是JWT,您需要使用
http.sessionManagement().sessionCreationPolicy(sessionCreationPolicy.STATELESS)
禁用会话创建,我不会在代码中的任何地方设置JSSessionID!我用的是弹簧靴。是否有可能是它自己设置的,而我需要将其关闭?要将其关闭http.sessionManagement().sessionCreationPolicy(sessionCreationPolicy.STATELESS)
您可以查看以了解更多信息invalidateHttpSession做什么?它是否只负责处理JSESSIONID?您需要清理浏览器cookie。登录时,您是否在http响应中仍然看到set cookie
头?