laravel - 使用 socket.io 的 Laravel 会话超时警告
问题描述
我试图在 20 分钟后为用户创建一个锁定屏幕(为了测试我放了 20 秒)。
我创建了一个中间件,它重定向到锁定屏幕,用户可以在其中插入密码以再次解锁。这在重新加载时工作正常,但我想用 socket.io 来做,所以用户会在帐户进入锁定状态前 5 分钟收到警告,这就是我苦苦挣扎的地方。
这是我的中间件
/**
* 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);
});
所以现在我想知道是否应该创建一个命令,每分钟运行一次以检查特定时间是否已经过去,然后显示警告或最好的方法是什么?
解决方案
推荐阅读
- regex - 使用 Powershell 将一行文本移动到其上一行的末尾
- python - 循环遍历熊猫列并附加集合的字典?
- c++ - 向量的容量?
- c# - Xamarin如果包含减号,我如何更改标签文本颜色
- c++ - 应该在数组中找到最大数字的函数出现问题
- html - 设置高度百分比
- python-3.x - 在 Matplotlib 雷达图上设置对数刻度
- reactjs - 如何在 Reactjs 中渲染来自 axios 调用的特定数据
- docker - docker-compose:差异运行、执行以及层会发生什么
- android - Android MaterialButton Set Check in XML for DataBinding