java - session 超时的工作方式与我希望的不同

标签 java jsf tomcat web-applications jsf-2

我正在尝试为我的应用程序配置 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/

相关文章:

catalina.sh 中设置的 JAVA_OPTS 不适用于 TOMCAT 私有(private)实例

java - 如何阻止 Jackson JSON 映射器隐式转换为字符串?

jsf - 在 EL 表达式中使用多个 bool 条件

java - 如何在两次调用 Controller 方法之间保留数据?

css - 使用 CSS 排列 radio 元素

jsf - richfaces 4.0.0 丰富 :popupPanel not showing

spring - war 、 Spring 和 Tomcat 7

java - PostgreSQL - 用户缺乏权限或找不到对象

java - 在 AWT 组件上添加透明 JPanel 进行绘制

java - 通过 Java 中的首选项访问 HKEY_CURRENT_USER