当前位置: 首页 > 面试题库 >

会话过期后自动注销

谷梁存
2023-03-14
问题内容

我们的应用程序在30分钟后注销并重定向到登录页面,我在web.xml中指定会话超时,并使用requestProcessor进行重定向。我想向用户显示一条消息,指出会话过期后会话已过期,如何我可以这样做吗?自动注销?我想在“会话超时,请重新登录”页面上提示错误消息。那我怎么能检测到会话超时呢?有什么方法会自动触发吗?


问题答案:

创建一个活动检查器,该检查器每分钟检查是否发生了任何用户活动(mouseclick,按键),并向服务器端执行心跳,以在用户活动时保持会话活动,而在用户不活动时不执行任何操作。如果30分钟没有任何活动(或在服务器端设置了任何默认会话超时),请执行重定向。

这是一个启动示例,jQuery几乎没有帮助来绑定click和keypress事件并触发ajax请求

<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
    $(document).ready(function() {
        $.active = false;
        $('body').bind('click keypress', function() { $.active = true; });
        checkActivity(1800000, 60000, 0); // timeout = 30 minutes, interval = 1 minute.
    });

    function checkActivity(timeout, interval, elapsed) {
        if ($.active) {
            elapsed = 0;
            $.active = false;
            $.get('heartbeat');
        }
        if (elapsed < timeout) {
            elapsed += interval;
            setTimeout(function() {
                checkActivity(timeout, interval, elapsed);
            }, interval);
        } else {
            window.location = 'http://example.com/expired'; // Redirect to "session expired" page.
        }
    }
</script>

创建一个Servlet监听/heartbeat并基本上执行以下操作的:

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
    request.getSession();
}

使会话保持活动状态。

当您将已登录的用户存储在会话中时,只要会话过期,它将“自动”注销。因此,您无需手动注销用户。



 类似资料:
  • 问题内容: 我有一个会话验证过滤器,当会话过期时该过滤器注销用户。 这是一段代码,但是没有用。不起作用意味着即使会话过期,它也不会重定向到登录页面。 请帮助我解决此问题。 问题答案: 我有一个会话验证过滤器,当会话过期时该过滤器注销用户。 老实说,这完全没有道理。如果将已登录用户存储为会话的属性,并基于会话中已登录用户的存在来拦截“已登录”状态,则在任何时候都不需要手动注销该用户。会话已过期。当会

  • 通过自动注销,我的意思是当会话到期时,浏览器将自己重定向到注销url,而用户不必单击任何将他重定向到注销url的链接。 导入org.springframework.beans.factory.annotation.autowired;导入org.springframework.boot.autocigure.security.securityproperties;导入org.springframe

  • 我在Tomcat7中有一个web应用程序,它将会话中的用户信息作为DTO对象保存。我还为我的项目启用了Spring Security性,如果用户没有会话,它会自动将用户重定向到登录页面。 如果我登录到应用程序一次,然后在Eclipse中重新启动Tomcat,会发生的情况是,我的会话被冲出,但cookie没有运行。 Edit:尽管Firefox说,但如果关闭并重新启动Firefox,cookie仍然

  • 我正在尝试运行电子商务演示应用程序的自动化脚本。但在将项目添加到购物车时,项目将添加到购物车,但登录会话已过期。我使用selenium、testNG工具和java编程语言开发了脚本。

  • 首先;这个问题类似于另一个尚未解决的问题:对magento soap api的调用立即过期 我正在开发一个基于XMLRPC的客户端-服务器模块。基于Magento的服务器向基于Java的客户端公开了几个API方法。我在我的客户端中使用标准JavaXMLRPC Jars。 我有一个“登录”调用,用于检索会话。然后我把这个传给其他人做不同的电话。我检查了它是否返回(看起来)有效会话。 但是,我使用此会

  • apache2启用了mod_proxy、mod_proxy_http和mod_proxy_connect,web.xml中的会话超时为30分钟。 编辑:忘了提:我的应用程序正在使用@Push(vaadin特性)