带有socket.io的Laravel会话超时警告
我试图在20分钟后为用户创建一个锁屏(对于测试,我用20秒) 我创建了一个中间件,它重定向到锁定屏幕,用户可以在其中插入密码再次解锁。这在重新加载时效果很好,但我希望使用socket.io这样用户将在帐户进入锁定状态前5分钟收到警告,而这正是我努力的方向 这是我的中间件带有socket.io的Laravel会话超时警告,laravel,Laravel,我试图在20分钟后为用户创建一个锁屏(对于测试,我用20秒) 我创建了一个中间件,它重定向到锁定屏幕,用户可以在其中插入密码再次解锁。这在重新加载时效果很好,但我希望使用socket.io这样用户将在帐户进入锁定状态前5分钟收到警告,而这正是我努力的方向 这是我的中间件 /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (!$this->session->has('lastActivityTime')) {
$this->session->put('lastActivityTime', time());
} else if (time() - $this->session->get('lastActivityTime') > $this->getTimeOut()) {
broadcast(new SessionTimeoutCheck('hello'));
$this->session->forget('lastActivityTime');
$this->session->put('locked', true);
return redirect($this->getRedirectUrl())->with([$this->getSessionLabel() => 'You have been inactive.']);
}
$this->session->put('lastActivityTime', time());
return $next($request);
}
这在重新加载时效果很好
我的客户JS上有这个
/**
* @desc Session timeout warning and lock screen
*/
socket.emit('private.user.channel', {
channel: 'private.user.channel.' + user_id,
}).on("App\\Events\\API\\SessionTimeoutCheck", function (data) {
console.log(data);
});
所以现在我想知道我是否应该创建一个命令,每分钟运行一次,检查是否已经过了特定的时间,然后显示警告,或者最好的方法是什么?我假设一旦不活动,它就会被“锁定”。您可以在客户端JS中保留一个计时器,当计时器达到20分钟时,您可以使用socket.io将其发送到服务器,或者使用ajax调用通知客户端已达到20分钟。@adis如何使用socket发送此计时器?