首页 > 解决方案 > 如何在 Laravel 5.6 中获取哪个用户发送了请求?

问题描述

我有两个登录面板。一种用于管理员,一种用于供应商。两者都使用一个通用文件进行其中一项计算。

我的问题是,如果两个用户在同一个浏览器中同时登录,那么如何识别是哪个用户向我发送了计算请求?

我已经在使用 Laravel 的 multiAuth 并且运行良好。

为了识别哪个用户登录,我使用下面的代码。

if (Auth::guard('admin')->check()) {
  // Calculations
}elseif(Auth::guard('merchant')->check()){
  // Calculations
}

但是当两个用户在同一个浏览器上登录时,它总是会让我进入第一个条件。

那么有什么方法可以让我得到哪个 Auth 正在向我发送请求?那么基于此我将管理我的计算?

标签: phplaravelauthenticationrequestmiddleware

解决方案


您可以检查您的路由中间件以检测当前在身份验证中使用了哪个守卫。

例子

$middlewares = request()->route()->gatherMiddleware();

foreach ($middlewares as $m) {
    if (preg_match("/auth:/", $m)) {
        list($mid, $guard) = explode(":", $m);
    }
}

$guard变量将托管您当前的警卫名称。在你的 if 语句中使用相同的。


推荐阅读