首页 文章

Laravel 5.4会话不活动的注销事件

提问于
浏览
0

我正在使用文件会话并尝试在用户注销时捕获 . 不是当他们点击按钮退出,而是当他们离开页面时仍然登录 . 我有一个事件监听器设置登出,但似乎没有触发 . 有人知道在会话注销发生时如何捕获或创建事件 .

Illuminate\Auth\Events\Logout' => ['App\Listeners\LogSuccessfulLogout',],

1 回答

  • 0

    会话超时发生在客户端,因此您将无法检测到何时发生 .

    您可以做的最好的事情是保留每个用户的活动日志,并在每个请求中存储该用户的时间戳 . 然后,您可以通过将session.php Config::get('session.lifetime') 中的生命周期变量添加到活动表中的最新时间戳并将其与当前时间进行比较来确定哪些会话即将到期 .

    如果它大于或等于当前时间,则表示其会话已过期 .

    您可能需要设置一个全局中间件来更新您的活动表,该活动表在每次登录用户请求后至少包含 user_id 列和 timestamp 列 .

    然后,'d want to setup a job which runs every minute or so which reads from your activity table, grabs the config value in session.php, and fire'为其确定会话到期的每个用户的用户注销事件 . 当它开始射击时,你的 'App\Listeners\LogSuccessfulLogout' 监听器应该开始接收该事件 .

相关问题