Различные методы аутентификации
Давайте сначала посмотрим на это. конфигурация/авторизация. Let's look at it first. config/auth.
поставщик
- Массив поставщиков позволяет нам настраивать поставщика, при этом каждый поставщик выбирает другой драйвер. Водитель выбирает красноречивый или базу данных.
- После соответствующего драйвера выберите соответствующий элемент конфигурации, красноречивый: модель, база данных: таблица.
охрана
- После того, как у нас есть поставщик, мы можем настроить охрану, которая может настроить драйвер и поставщика.
- Поставщик-это поставщик, которого мы настроили выше.
- У драйвера есть сеанс и токен на выбор.
- API по умолчанию использует аутентификацию по токенам, в то время как веб-пользователи используют аутентификацию сеанса.
Признание сеанса
- Мы можем использовать его для аутентификации.
Аутентификация::попытка(['email' = > $email, 'пароль' => $пароль]) We can use it in authentication.Auth::attempt([’email’ => $email, ‘password’ => $password]) - Method. This method automatically sets an authentication Session for the user after the authentication is successful, identifying the successful login of the user. Метод. Этот метод автоматически устанавливает сеанс аутентификации для пользователя после успешной аутентификации, идентифицируя успешный вход пользователя в систему.
Вы можете использовать его позже. You can use it later.Auth::guard()->check()
Знак
- Хотя laravel предоставляет метод драйвера, по умолчанию он не использует метод проверки и не предоставляет метод автоматической генерации токенов. Чтобы использовать этот метод, нам нужно настроить метод входа в систему.
- Взглянув на лежащую в основе
\vendor\laravel\framework\src\Illuminate\Auth\TokenGuard.phpМетод, мы можем обнаружить, что поле по умолчанию в нижней части laravel5.5 является полем токена. Мы также можем настроить это поле здесь. Здесь я использую web_token в качестве поля подтверждения.
- Затем мы должны создать соответствующее поле web_token в базе данных.
Note: If you save web_token using NoSQL such as redis, you also need web_token, so that the Auth facade of laravel can be used
- После того, как вы создали поле, вы можете написать метод входа в систему:
Здесь redis также используется для сохранения токена, что позволяет легко установить время истечения срока действия токена.
- Что касается того, почему он должен храниться в базе данных, необходимо обновить токен базы данных, когда истекает срок действия выхода из системы или токена, потому что способ получения пользователя в нижней части аутентификации-из базы данных.
- Разместите исходный код, чтобы увидеть волну
В первую очередь или в первую очередь
\vendor\laravel\framework\src\Illuminate\Auth\TokenGuard.phpфайл- Здесь, если вы хотите поместить токен в заголовок для передачи значений, вам также необходимо
TokenGuard.phpДобавить этот абзац
- Здесь, если вы хотите поместить токен в заголовок для передачи значений, вам также необходимо
- Если вы не добавите этот абзац, вы можете получить токен только из тела, но вы не можете получить токен из головы. Если я неправильно это понимаю, я надеюсь указать.
- Возвращаясь к оригиналу, мы должны сказать
Auth::user()Метод, который сначала создает экземпляр указанного драйвера guard guard, по умолчанию, если он не указан - Вы можете обратиться к этому коду
\vendor\laravel\framework\src\Illuminate\Auth\AuthManager.php
- Если указано, создается экземпляр указанного защитника, например
Auth::guard('пользователь')->пользователь() - По умолчанию мы здесь защищаем драйвер токена администратора, токен.
- Когда мы вызываем
Auth::user( )При вызове\vendor\laravel\framework\src\Illuminate\Auth\TokenGuard.phpЛи
- А потом мы нашли его.
retrieveByCredentials()Этот метод находится вvendor\laravel\framework\src\Illuminate\Auth\EloquentUserProvider.php
- Вы можете видеть, что этот метод находит пользовательский объект в модели eloquent и возвращает его нам при условии наличия токена.
- Итак, мы
Auth::пользователь()Полученный пользовательский объект находится в модели с использованием токена, поэтому, если вы хотите использовать эту функцию, поле токена в базе данных должно постоянно обновляться. - Конечно, вы можете отказаться от него или изменить исходный код, чтобы он мог получить токен и соответствующий ему идентификатор из redis, а затем использовать идентификатор для получения данных из модели.
- После этого мы напишем промежуточное программное обеспечение, чтобы проверить правильность маркера при посещении веб-сайта.
- Добавьте новое промежуточное программное обеспечение
kernel.phpв
- Наконец, вызов этого промежуточного программного обеспечения в конструкторе метода, подлежащего проверке, открывается, и у нас есть проверка токена
- Если у вас есть метод, который вы не хотите использовать для проверки, вы можете использовать его
кроме()Метод исключает это.