【问题标题】:Laravel 5.4 Listener on Session TimeoutLaravel 5.4 会话超时监听器
【发布时间】:2017-08-04 17:41:45
【问题描述】:

我对这个问题做了一些研究,大多数人都说不可能做到。有什么解决方案或破解方法可以做到这一点吗?如果会话超时,我只想更新数据库中用户的状态。

【问题讨论】:

  • 你尝试了什么?
  • 看看这个thread它可能对你有帮助;)
  • @RomnickSusa 我尝试在 App/Exceptions/Handler.php 中的 unauthenticated() 函数中执行此操作,但由于会话超时,因此我无法在此函数中获取用户 ID,因此我无法获取用户 ID。
  • @Maraboc 我之前读过这个帖子,这只是为了重定向到一个特定的页面,我想要的是获取用户 ID 并更新数据库中的状态
  • 如果您将 // function you want to fire when the user goes idle 替换为对控制器的 ajax 调用以更新您的数据库,它会这样做

标签: laravel session laravel-5.4


【解决方案1】:

最好的方法是通过工作来完成:

对于会话使用类型数据库:https://laravel.com/docs/5.4/session

有一个名为 last_activity 的字段带有时间戳(我认为 laravel 会自动更新它)。

现在您可以编写一个作业来检测具有时间戳

【讨论】:

  • 我现在正在使用数据库存储会话,但是当我注销时,插入数据库的用户ID为空。那么如何检测这条记录属于哪个用户呢?
  • 每个用户生成一个会话,不管他是否登录。因此,如果您想跟踪已注销用户的会话,您必须将 id 存储在一个单独的字段中,这样 Laravel 就不会覆盖它。我建议在用户登录后,将他的用户 ID 复制到会话表中自己的 user_id 字段中。
猜你喜欢
  • 2019-03-10
  • 2019-08-20
  • 2017-10-25
  • 2018-11-28
  • 2012-12-13
  • 1970-01-01
  • 1970-01-01
  • 2015-12-09
  • 1970-01-01
相关资源
最近更新 更多