Laravel запомнить токен не очищается [5.7] - PullRequest
0 голосов
/ 07 ноября 2018

В моем приложении 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

Как вы можете видеть, токен запоминания также ссылается на охранника, если бы я должен был войти в систему, используя обычную аутентификацию, он бы выглядел как _web_

Интересно, что когда я выхожу из системы, перенаправление происходит, но токен запоминания сохраняется, это не происходит с пользователями.

Ниже приведен пример токена запоминания пользователя, который использует веб-защиту:

enter image description here

Я вижу, что 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');
}

Как вы можете видеть, я считаю, что я сделал все так, как и должно быть, но я не вижу нигде, что действительно очищает токен запоминания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...