我在一个区间内运行了一个小小的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,
答案 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'))