Laravel会话是否通过Ajax调用自动扩展?

时间:2018-01-23 16:49:23

标签: php laravel laravel-5.4

我在一个区间内运行了一个小小的JS脚本:

<script>
    function checkAuthState() {
        $.get('/session/check', function(response) {
            console.log(response);
        });
    }

    setInterval(checkAuthState, 10000);
</script>

控制器操作 - 当前 - 是虚拟的:

<?php

    public function checkAuthState() {
        return response()->json(array('success' => true));
    }

我注意到,每次进行Ajax调用时,laravel_session cookie到期日期会自动扩展 - 10秒(与JS间隔匹配)。< / p>

为什么会这样?

我需要在会话到期时为案例添加处理程序,但显然每隔10秒就会命中一次服务器阻止(?)它。我很困惑。

session.php 配置中的重要设置:

'lifetime' => 1, /* 1 min, for testing purposes */
'expire_on_close' => false,

2 个答案:

答案 0 :(得分:2)

会议结束时,看起来vistor离开了网站并离开了。这被假定为“他们最后一次向网站提出请求后的一段时间”。

Ajax请求是一个请求(就服务器而言,与任何其他请求一样),因此cookie可以像任何其他请求一样进行扩展。

答案 1 :(得分:2)

会议是如何运作的。如果要存储一些应该过期的数据,请改用cache。将数据存储一分钟:

cache(['key' => 'value'], 1);

然后使用它:

public function checkAuthState()
{
    cache('key');
    return response()->json(array('success' => true));
}

<强>更新

如果你想知道会话是否过期,只需存储一些值:

session('key', 'value')

检查一下:

if (session('key'))