Java 如何在注销侦听器中获取http会话id?
我的侦听器侦听用户注销。 我需要知道此侦听器上的会话idJava 如何在注销侦听器中获取http会话id?,java,spring,session,spring-security,logout,Java,Spring,Session,Spring Security,Logout,我的侦听器侦听用户注销。 我需要知道此侦听器上的会话id public class MyLogoutSuccessHandler extends SimpleUrlLogoutSuccessHandler { @Autowired private UserService userService; @Override public void onLogoutSuccess(HttpServletRequest request, HttpServletRespons
public class MyLogoutSuccessHandler extends SimpleUrlLogoutSuccessHandler {
@Autowired
private UserService userService;
@Override
public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication)
throws IOException, ServletException {
RequestContextHolder.currentRequestAttributes().getSessionId();
}
}
它产生
未找到线程绑定请求:您是指实际web请求之外的请求属性,还是在最初接收线程之外处理请求?如果您实际上在web请求中操作,并且仍然收到此消息,那么您的代码可能在DispatcherServlet/DispatcherPortlet之外运行:在这种情况下,请使用RequestContextListener或RequestContextFilter公开当前请求
如何在我的具体情况下修复它?请参阅StackOverflow。将以下内容添加到web.xml
:
<web-app>
...
<listener>
<listener-class>
org.springframework.web.context.request.RequestContextListener
</listener-class>
</listener>
...
</web-app>
...
org.springframework.web.context.request.RequestContextListener
...