Spring:在默认注销事件中触发一些方法

时间:2014-11-13 17:15:40

标签: spring-mvc spring-security

在Spring MVC中,如果用户长时间没有活动,他会默认注销,因为会话超时。

如果用户已登录且浏览器已关闭,那么他也会注销。

我已实施SimpleUrlLogoutSuccessHandler以捕获注销成功。但只有在用户手动点击注销链接时才会触发。

如何在登录会话到期或用户默认注销时触发某些方法(例如在窗口关闭时)?

1 个答案:

答案 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
    }
}

不要忘记在启动时注册你的听众。

很难关闭窗口,但会话将及时到期。