Laravel:检查两个用户是否同时登录

时间:2018-08-09 00:44:27

标签: php laravel authentication

我想通过检查商家的所有者和最终客户是否都是兑换优惠券来验证我的应用中优惠券的使用。这将是一个过程:

  • 客户显示他的QR码
  • 所有者对其进行扫描
  • 如果
  • 优惠券都已登录,则可以兑换(当所有者的设备发出post请求并使用{{1 }})

我知道我可以使用CouponController来验证所有者的状态(无论如何注销,他都将无法访问兑现视图),但是有什么方法可以检查是否在没有修改数据库中的auth()行的情况下也登录了 Client ?现在,我使用以下内容:

User

1 个答案:

答案 0 :(得分:1)

让我们首先阐明 PHP脚本的工作方式,以及这如何影响您了解用户是否在线的路径。

在您的Laravel应用程序中,出于 PHP如何处理HTTP请求的原因,您可以识别匹配(请求),您可以像心跳那样解释。因此,您(至少使用裸PHP)无法一直在网上看到用户,但是如果页面点击是最近,您可以假设该用户在那里。

也就是说,一旦给出页面点击/ http请求,将由您决定可接受的时间窗口是什么,该时间是否可以确定用户是否在线。

如果您仅在登录时记录该用户处于活动状态(如$user->active = 1之类的布尔/整数标志),您会认为该用户处于活动状态即使在用户离开很久之后在应用程序中运行,因为用户会话可能完全保持活动状态(打开),但实际上用户处于非活动状态。

有很多解决方法。

一种可能的方法是记住用户最后一次点击您的页面的时间,因此您可以在接下来的5分钟(例如,取决于您的值)之后将其视为在线用户。对于您愿意实现的目标而言,这种方法足够公平。中间件可以实现跟踪,因此您的控制器保持清洁。

关于如何精确实现此问题,嗯,这将是一个完整而自以为是的git项目,可在此处发布,可能不在此答案的范围内。长话短说,请考虑记录您认为与用户活动相关的事件的时间戳,而不是没有时间信息的标记。


如果您愿意通过外部软件包将其实现为可用功能,则有以下几种选择:

即使您不愿意使用第三方软件包,也可以随意挖掘它们的来源(从“特质”开始)以获取一些解决方法。

您还将注意到,其中一些使用 Cache 来跟踪一次性数据,而无需将其存储到数据库中的业务ERD中。

希望这可以作为起点。