Laravel Auth :: guard работает только по умолчанию - PullRequest
0 голосов
/ 12 февраля 2019

Первый раз, когда я спрашивал здесь что-то здесь раньше, и это не самый опытный опыт, поэтому, пожалуйста, будьте добры!

У меня есть две таблицы в моей БД - пользователи и агенты.

Iперепробовал несколько способов входа в систему обоих пользователей и в идеале хотел бы, чтобы они могли войти в систему из одной и той же формы и проверить обоих защитников, чтобы убедиться, что учетные данные действительны, но по какой-то причине при выполнении попыток наОхранники это будет работать только для таблицы, для которой по умолчанию установлено в моем файле auth.php.

Охранники, которые я пытаюсь:

Auth::guard('web')->attempt($credentials)

Auth::guard('agent')->attempt($credentials)

Если я установлю свою защиту по умолчанию в моем auth.php файл для веб-защиты работает нормально и регистрирует соответствующие учетные данные из таблицы «Пользователи», но при попытке ввести учетные данные агентов он показывает на вкладке «Моя сеть»:

Логин -

POST302 найдено

Агент -

GET 302 найдено

Логин -

Получить 200 OK

Так что это почти как признаниеномера верны и перенаправляют, но затем не продолжают использовать выбранную охрану?

LoginController - DoLogin

Auth.php configeration

1 Ответ

0 голосов
/ 12 февраля 2019

в вашем config/auth.php коде ниже:

<?php
return [

    'defaults' => [
        'guard' => 'web',
        'passwords' => 'users',
    ],

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

    ],

    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],
        'agents' => [
            'driver' => 'eloquent',
            'model' => App\Agent::class,
        ]
    ],

    'passwords' => [
        'users' => [
            'provider' => 'users',
            'table' => 'password_resets',
            'expire' => 60,
        ],
        'agents' => [
            'provider' => 'agents',
            'table' => 'password_resets',
            'expire' => 60,
        ],
    ],
];

в вашем контроллере входа:

 public function login(Request $request)
    {
      $this->validate($request, [
        'email'   => 'required|email',
        'password' => 'required|min:6'
      ]);

      if (Auth::guard('agent')->attempt(['email' => $request->email, 'password' => $request->password])) {
        return redirect('/dashboard/agent');
      }

      if(Auth::guard('web')->attempt(['email' => $request->email, 'password' => $request->password])){
         return redirect('/dashboard/user');
      }

        return redirect()->back()->withInput($request->input());


    }
...