我实现了一个 SessionListener 来跟踪我的网络服务器的打开 session
我在我的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 被调用。当我关闭浏览器并等待 session 超时时,将调用 sessionDestroyed。
当我登录网站并关闭浏览器时会出现此问题。在这种情况下,sessionDestroyed在超时后永远不会被调用。为什么当用户登录并关闭浏览器时 session 永远不会被删除? 在关闭浏览器并等待超时时间后,我需要做什么才能删除登录用户的过期 session ?
最佳答案
这是解决方案。即使您在 web.xml 中设置了 session 超时,当用户登录时,Spring Security 也会覆盖该值。超时设置为:
session.maxInactiveInterval = -1
因此,您必须再次覆盖此值才能使 session 超时生效。
关于java - 当登录用户关闭浏览器时,如何强制 Tomcat 删除过期的 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16675588/