ThinkPHP下设置30分钟无操作就退出登录(前端计时)

最初发表于: 2019-10-10 16:20:58

示例代码如下, 这些代码在模板, 比如base.html

{if condition="$Think.session.user"}
<!-- 已登录状态下, 设置页面30分钟未操作则自动执行退出登录 -->
<script>
    var maxTime = 30*60; // seconds
    var time = maxTime;
    $('body').on('keydown mousemove mousedown', function (e) {
        time = maxTime; // reset
    });
    var intervalId = setInterval(function () {
        time--;
        if (time <= 0) {
            ShowInvalidLoginMessage();
            clearInterval(intervalId);
        }
    }, 1000)
    function ShowInvalidLoginMessage() {
        $.get('{:url('index/userx/logout')}', {
        }, function (res) {
            console.log('已退出')
            window.location.href="{:url('index/userx/login')}";
        })

    }
</script>
{/if}

这种方法, 适用于打开网页后, 然后电脑摆在30分钟未动的情况;

假如说登录后, 然后关闭这个网页, 过了30多分钟一看, 它可能还是登录状态, 它是在前端计算时间, 不是在后端计算时间.