Как мне узнать, какой 'guard` сделал текущий запрос в Laravel? - PullRequest
0 голосов
/ 26 апреля 2018

Вот мой auth.php:

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

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

],

Теперь, если и user, и admin зарегистрированы в одном браузере, как я могу проверить, какой охранник сделал запрос?

Обратите внимание, что Auth::guard('admin')->check() и Auth::check() возвращают true независимо от того, кто делает запрос.

1 Ответ

0 голосов
/ 05 июля 2018

Я предполагаю, что вы хотите знать, к какому охраннику относится auth()->user() - который доступен по auth()->guard()

К сожалению, не существует функции, которая фактически могла бы получить имя охранника. Вы можете использовать auth()->guard()->getName(), но это возвращает идентификатор сеанса для охранника (т.е. login_guardname_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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...