我正在尝试为我的应用程序配置 session 超时。
我在 web.xml 中配置了 i 分钟,如下所示:
<session-config>
<session-timeout>1</session-timeout>
</session-config>
为确保我创建的监听器一切正常,请参阅:
<listener>
<listener-class>br.com.sender.util.SessionListener</listener-class>
</listener>
查看我的监听类:
package br.com.sender.util;
import java.util.Date;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class SessionListener implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent event) {
System.out.printf("Session ID %s created at %s%n", event.getSession().getId(), new Date());
}
public void sessionDestroyed(HttpSessionEvent event) {
System.out.printf("Session ID %s destroyed at %s%n", event.getSession().getId(), new Date());
}
}
当我登录我的应用程序时, session 被创建(在同一时刻我用 sessionScope 存储了一个 UserMB),参见:
Session ID 801040FAFEBC8D21C3C8E0DA56BF9B27 created at Tue Jun 10 18:44:33 BRT 2014
几分钟后没有任何操作 session 被销毁:
Session ID 801040FAFEBC8D21C3C8E0DA56BF9B27 destroyed at Tue Jun 10 18:46:26 BRT 2014
当用户单击某些菜单或按钮时,会再次创建 session ,但我希望 UserMB (SessionScope) 已被销毁并且用户必须重新登录,但并没有发生,用户无需重新登录即可继续使用应用程序。
最佳答案
您需要一个 WebFilter
来检查 session 范围内的某些属性并确定用户是否登录
关于java - session 超时的工作方式与我希望的不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24151464/