Javascript 会话到期时自动重定向

Javascript 会话到期时自动重定向,javascript,jsp,Javascript,Jsp,如何在会话到期时(自动)重定向页面,而不在页面上执行任何用户操作。创建一个活动检查器,每分钟检查是否发生了任何用户活动(鼠标单击、按键)并向服务器端执行心跳,以在用户处于活动状态时保持会话活动,而在用户处于非活动状态时不执行任何操作。当30分钟内没有活动时(或服务器端设置的任何默认会话超时),则执行重定向 下面是一个启动示例,它对绑定单击和按键事件以及激发ajax请求几乎没有帮助 <script src="http://code.jquery.com/jquery-latest.min.j

如何在会话到期时(自动)重定向页面,而不在页面上执行任何用户操作。

创建一个活动检查器,每分钟检查是否发生了任何用户活动(鼠标单击、按键)并向服务器端执行心跳,以在用户处于活动状态时保持会话活动,而在用户处于非活动状态时不执行任何操作。当30分钟内没有活动时(或服务器端设置的任何默认会话超时),则执行重定向

下面是一个启动示例,它对绑定单击和按键事件以及激发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>

保持会话活动。

创建一个活动检查器,每分钟检查是否发生了任何用户活动(鼠标单击、按键),并向服务器端执行心跳信号,以在用户处于活动状态时保持会话活动,而在用户未处于活动状态时不执行任何操作。当30分钟内没有活动时(或服务器端设置的任何默认会话超时),则执行重定向

下面是一个启动示例,它对绑定单击和按键事件以及激发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>

使会话保持活动状态。

是特定于页面的超时,还是只是一般会话超时?也就是说,从某人登陆页面的那一刻起,启动计时器,或者在创建会话时,启动计时器?您可以使用ajax ping服务器进行检查。或者在每页的基础上设置一个元刷新时间?如果我每次调用Ajax时都向服务器调用use timer和Ajax函数,会话将被重新创建。。?如何在不重新创建会话的情况下访问会话变量?如果在首次启动会话时创建了会话变量,则可以通过调用会话_start()随时检查此变量计时器;然后检查$_会话['timer'];除非你主动重置计时器,否则计时器不会重置。我想你没有明白我的问题。我有一个页面,我需要继续查看会话是否过期。代码应该是客户端(java脚本),不能是服务器端代码,因为它永远不会允许会话过期。这是一个特定于页面的超时,还是只是一个一般的会话超时?也就是说,从某人登陆页面的那一刻起,启动计时器,或者在创建会话时,启动计时器?您可以使用ajax ping服务器进行检查。或者在每页的基础上设置一个元刷新时间?如果我每次调用Ajax时都向服务器调用use timer和Ajax函数,会话将被重新创建。。?如何在不重新创建会话的情况下访问会话变量?如果在首次启动会话时创建了会话变量,则可以通过调用会话_start()随时检查此变量计时器;然后检查$_会话['timer'];除非你主动重置计时器,否则计时器不会重置。我想你没有明白我的问题。我有一个页面,我需要继续查看会话是否过期。代码应该是客户端(java脚本),它不能是服务器端代码,因为它永远不会允许会话过期。确实是您有史以来最好的答案之一,这应该是+1000确实是您有史以来最好的答案之一,这应该是+1000