1

我实现了一个 SessionListener 来跟踪我的网络服务器的打开会话

我设置在我的web.xml

<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 。

当我登录我的网站并关闭浏览器时会出现问题。在这种情况下sessionDestroyed在超时后永远不会被调用。为什么当用户登录并关闭浏览器时,会话永远不会被删除?在关闭浏览器并等待超时时间后,我该怎么做才能删除已登录用户的过期会话?

4

1 回答 1

0

这是解决方案。即使您在 web.xml 中设置会话超时,Spring Security 也会在用户登录时覆盖此值。超时设置为:

session.maxInactiveInterval = -1

因此,您必须再次覆盖此值才能使会话超时工作。

于 2013-05-21T20:29:02.493 回答