在Spring MVC中,如果用户长时间没有活动,他会默认注销,因为会话超时。
如果用户已登录且浏览器已关闭,那么他也会注销。
我已实施SimpleUrlLogoutSuccessHandler
以捕获注销成功。但只有在用户手动点击注销链接时才会触发。
如何在登录会话到期或用户默认注销时触发某些方法(例如在窗口关闭时)?
答案 0 :(得分:1)
您可以使用HttpSessionListener抓住会话过期。
public class MySessionListener implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent se) { }
public void sessionDestroyed(HttpSessionEvent se) {
HttpSession session = se.getSession();
SecurityContext securityContext = (SecurityContext)session.getAttribute(HttpSessionSecurityContextRepository.SPRING_SECURITY_CONTEXT_KEY);
// check for null, retrieve Authentication etc
}
}
不要忘记在启动时注册你的听众。
很难关闭窗口,但会话将及时到期。