Laravel Что такое охранник?
Я просматривал встроенные auth-контроллеры, и я заметил, что они используют что-то под названием "Гвардия". До сих пор, когда я делал свои собственные логины/регистрационные формы, я никогда не касался их и обычно делал бы такие вещи, как:
Auth::attempt()
без какого-либо охранника. Я попытался выяснить, что это такое, но я не мог найти никакой информации об этом, может кто-нибудь объяснить мне, что цель охранников?
Ответы
Ответ 1
Они определяют, как система должна хранить и извлекать информацию о ваших пользователях.
Вы можете найти конфигурацию в вашем файле config/auth.php
. Сетевая защита - это традиционное хранилище файлов cookie, поэтому она защищает Laravel классическим способом хранить и извлекать информацию о сеансе. Защита API, с другой стороны, использует токены. Поэтому вы можете использовать API-защиту, если хотите аутентифицировать пользователей и запросы с использованием токена API в заголовке (однонаправленном канале) или параметре запроса.
Вы также можете создать свою собственную охрану, если хотите, и там также есть хорошее вступительное сообщение в блоге на тему Мэтта Штауффера.
Ответ 2
Защита - это способ предоставления логики, которая используется для идентификации аутентифицированных пользователей. Laravel предоставляет различных охранников, таких как сессии и жетоны. Сеансовая защита поддерживает состояние пользователя в каждом запросе с помощью файлов cookie, а с другой стороны, защита токена аутентифицирует пользователя, проверяя действительный токен в каждом запросе.
Ответ 3
Поскольку у меня был тот же вопрос, а другие ответы не дали мне информацию, которую я искал (они прекрасно объясняют, что делает охранник, но не объясняют, почему вам следует когда-либо беспокоиться о вызове его методов), я предоставлю другой ответ.
Я также не был уверен в разнице между методами, предоставляемыми помощником auth()
, и методами, предоставляемыми самим охранником auth()->guard()
, поскольку они, казалось, делали то же самое.
Быстрый dd(auth())
показывает, что он возвращает экземпляр AuthManager
. Таким образом, мы можем найти этот класс в исходном коде: в нижней части AuthManager.php есть магический метод __call()
magic method, который перенаправляет все неопределенные вызовы в свой собственный guard()
метод.
public function __call($method, $parameters)
{
return $this->guard()->{$method}(...$parameters);
}
Это ясно показывает нам, что методы auth()
и auth()->guard()
, похоже, не только делают то же самое, но и абсолютно одинаковы. Таким образом, до тех пор, пока должна использоваться защита по умолчанию, дополнительный ->guard()
может быть опущен с душевным спокойствием.