В моем приложении Laravel я использую дополнительную защиту под названием admin
, которая имеет собственную модель и таблицу базы данных.
Я определяю это в / config / auth.php
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
],
'admin' => [
'driver' => 'session',
'provider' => 'admins',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'admins' => [
'driver' => 'eloquent',
'model' => App\Admin::class,
],
],
'passwords' => [
'users' => [
'provider' => 'users',
'table' => 'password_resets',
'expire' => 60,
],
'admins' => [
'provider' => 'admins',
'table' => 'password_resets',
'expire' => 15,
],
],
Затем я по существу копирую все с http / controllers / auth до http / controllers / auth / admin . В частности, LoginController, ForgotPasswordController и ResetPasswordController.
Затем я переопределяю необходимые методы для использования охраны как Auth::guard('admin');
Теперь все работает, как и ожидалось, кроме одного: как администратор, если я отмечаю 'Запомнить меня' в форме входа, он генерирует токен следующим образом:
![enter image description here](https://i.stack.imgur.com/kkyWZ.jpg)
Как вы можете видеть, токен запоминания также ссылается на охранника, если бы я должен был войти в систему, используя обычную аутентификацию, он бы выглядел как _web_
Интересно, что когда я выхожу из системы, перенаправление происходит, но токен запоминания сохраняется, это не происходит с пользователями.
Ниже приведен пример токена запоминания пользователя, который использует веб-защиту:
![enter image description here](https://i.stack.imgur.com/Rf0lh.jpg)
Я вижу, что LoginController использует AuthenticatesUses в этой строке:
use AuthenticatesUsers;
У которого есть защищенный метод, который я переопределяю в своем LoginController, как показано ниже:
/**
* Define the guard to use for the Authenticated users trait, in this case admin
*
* @return void
*/
protected function guard()
{
return Auth::guard('admin');
}
Как вы можете видеть, я считаю, что я сделал все так, как и должно быть, но я не вижу нигде, что действительно очищает токен запоминания.