Я хочу сделать несколько аутентификаций в моем проекте laravel.
Я создаю новый «администратор» в моем файле auth.php, но я не знаю, как установить новый созданный защитник в моем authcontroller.
Он всегда использует настройки «по умолчанию» из моего auth.php:
'defaults' => [ 'guard' => 'web', 'passwords' => 'users', ],
1) Если вы хотите использовать только что созданный admin
в приложении, вы можете изменить значение по умолчанию для файла конфигурации.
2) Если речь идет только об AuthController, который использует встроенную систему Auth в Laravel, вы можете добавить эту строку в AuthController.php и PasswordController.php :
protected $guard = 'admin';
Ref – Проверить настройку Guard здесь
3) Если вы хотите, чтобы у вас был другой защитник, отличный от установленного по умолчанию для любой связанной с Auth задачи, вы можете указать его вручную следующим образом:
// For route middleware Route::get('profile', [ 'middleware' => 'auth:admin', 'uses' => 'ProfileController@show' ]); // For manually logging the user in if (Auth::guard('admin')->attempt($credentials)) { // Authenticated... } // To login specific user using eloquent model Auth::guard('admin')->login($user); // For getting logged in user Auth::guard('admin')->user(); // To check if user is logged in if (Auth::guard('admin')->check()) { // Logged in }
Laravel 5.4+ использует в любом Auth Controller следующее:
use Illuminate\Support\Facades\Auth; protected function guard(){ return Auth::guard('guard-name'); }
Вы также должны зарегистрировать охранник в config\auth.php
'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'api' => [ 'driver' => 'token', 'provider' => 'users', ], 'admin' => [ 'driver' => 'session', 'provider' => 'admins', ], ],
admin – имя охранника, провайдер – TABLE-NAME