我有一个Spring应用程序,我有一个扩展HttpSessionEventPublisher的类。
我一直在追踪会话毁灭事件。
但现在我想区分会话是否因会话超时或用户明确注销而被破坏。
感谢。
答案 0 :(得分:3)
查看HttpSessionEventPublisher API,看起来您可以使用HttpSessionDestroyedEvent
方法中的参数传递的sessionDestroyed()
。
您可以执行以下操作 :
javax.servlet.http.HttpSession session = event.getSession();
long lastAction = session.getLastAccessedTime();
long now = System.currentTimeMillis();
int timeout= getMaxInactiveInterval();
if ((now-lastAction) > timeout)
//the session has timed out
SecurityContext context = getSecurityContext();
Authentication authentication = context.getAuthentication();
if (!authentication.isAuthenticated())
//the user has logged out