Php 我如何找到在Laravel提出当前请求的“警卫”?

Php 我如何找到在Laravel提出当前请求的“警卫”?,php,laravel,laravel-5,Php,Laravel,Laravel 5,这是我的auth.php: 'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'admin' => [ 'driver' => 'session', 'provider' => 'admins', ], ], 现在,如果用户和管理员都在同一个浏览器中登录,我

这是我的
auth.php

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'admin' => [
        'driver' => 'session',
        'provider' => 'admins',
    ],

],
现在,如果
用户
管理员
都在同一个浏览器中登录,我如何检查哪个卫兵发出了请求


请注意,无论是谁提出请求,
Auth::guard('admin')->check()
Auth::check()
都返回
true

不幸的是,没有一个现有的函数来实际获取守卫的名称。您可以使用
auth()->guard()->getName()
,但这会返回保护的会话标识符(即
login\u guardname\u sha1hash
),但如果需要,您可以提取它:

$guard = auth()->guard(); // Retrieve the guard
$sessionName = $guard->getName(); // Retrieve the session name for the guard
// The following extracts the name of the guard by disposing of the first
// and last sections delimited by "_"
$parts = explode("_", $sessionName);
unset($parts[count($parts)-1]);
unset($parts[0]);
$guardName = implode("_",$parts);

获取应用程序中定义的所有防护,并查找当前用户登录时使用的防护

$guards = array_keys(config('auth.guards'));

return collect($guards)->first(function($guard){
    return auth()->guard($guard)->check();
});

您是否有存储所有普通用户和管理员用户的admins表?Auth::guard($this->getGuard())?@HimanshuUpadhyay否,单独tables@CUGreen我不同意。我已经在我的问题中清楚地提到,我知道哪个卫兵登录了。(都是他们)我只想知道他们中的哪一个发出了这个特定的请求。