1
我实现了一个SessionListener跟踪如何在登录时强制Tomcat删除过期会话用户关闭浏览器?
我在web.xml
设置我的web服务器的开放会话:
<listener>
<listener-class>demo.MyHttpSessionListener</listener-class>
</listener>
<session-config>
<session-timeout>1</session-timeout>
</session-config>
我demo.MyHttpSessionListener.groovy:
class MyHttpSessionListener implements HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent event) {
...
}
@Override
public void sessionDestroyed(HttpSessionEvent event) {
...
}
}
当我去我的网站sessionCreated被调用。 sessionDestroyed在我关闭浏览器等待会话超时时调用。
当我在我的网站上登录并关闭我的浏览器时,会出现此问题。在这种情况下,会话已销毁永远不会在超时后调用。为什么当用户登录并关闭浏览器时会永远不会被删除? 在关闭浏览器并等待超时时间后,如何让已登录用户的过期会话被删除,我需要做些什么?
用户关闭浏览器时无法做任何事情。当自上次会话交互后经过' 1 session-timeout>'分钟时,会话将自行超时。 –
@SotiriosDelimanolis我知道,但过了一段时间应该处理超时。当您之前登录时,sessionDestroyed从不会被调用,关闭浏览器并等待超时分钟。 sessionDestroyed仅在没有执行登录的会话上调用。 – confile
检查BalusC的答案[这里](http://stackoverflow.com/questions/1945582/how-to-call-sessiondestroyed-when-a-session-times-out)。看起来,虽然会话可能会在一分钟后失效,但容器将不会调用'sessionDestroyed()'直到某个实现特定的时间间隔。 –