Laravel 5.2 нужен пример, который реализует драйверы аутентификации по умолчанию / «Multi-Auth». который требует много работ прямо сейчас, поскольку

Драйверы аутентификации / «Multi-Auth»

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

Solutions Collecting From Web of "Laravel 5.2 нужен пример, который реализует драйверы аутентификации по умолчанию / «Multi-Auth». который требует много работ прямо сейчас, поскольку"

Set two new model App\Admin App\User Update config/auth.php return [ 'defaults' => [ 'guard' => 'user', 'passwords' => 'user', ], 'guards' => [ 'user' => [ 'driver' => 'session', 'provider' => 'user', ], 'admin' => [ 'driver' => 'session', 'provider' => 'admin', ], ], 'providers' => [ 'user' => [ 'driver' => 'eloquent', 'model' => 'App\User', ], 'admin' => [ 'driver' => 'eloquent', 'model' => 'App\Admin', ], ], 'passwords' => [ 'user' => [ 'provider' => 'user', 'email' => 'auth.emails.password', 'table' => 'password_resets', 'expire' => 60, ], 'admin' => [ 'provider' => 'admin', 'email' => 'auth.emails.password', 'table' => 'password_resets', 'expire' => 60, ] ] ]; In kernel.php protected $middleware = [ \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, \Illuminate\Session\Middleware\StartSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class ]; /** * The application's route middleware groups. * * @var array */ protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, //\App\Http\Middleware\VerifyCsrfToken::class, ], 'api' => [ 'throttle:60,1', ], ]; and in Route.php set below code and test Route::get('/login', function() { $auth = auth()->guard('admin'); $credentials = [ 'email' => 'admin@gmail.com', 'password' => 'password', ]; if ($auth->attempt($credentials)) { return redirect('/profile'); } }); Route::get('/profile', function() { if(auth()->guard('admin')->check()){ print_r(auth()->guard('admin')->user()->toArray()); } if(auth()->guard('user')->check()){ print_r(auth()->guard('user')->user()->toArray()); } }); Enjoy :) 

Используя пример rajpurohit-dinesh, нам просто нужно сделать первый шаг:

1: Создайте модель App \ Admin (в нашей папке приложения). Вот как должен быть ваш класс Authenticatable.

 <?php namespace App; use Illuminate\Foundation\Auth\User as Authenticatable; Class Admin extends Authenticatable { // } 

2: Обновить config / auth.php.

 return [ // This is the default guard used, not need to declare // another guard here 'defaults' => [ 'guard' => 'user', 'passwords' => 'user', ], // Here we must to declare the guards, if we created the App\Admin // class as first step, we don't need to create a custom guard 'guards' => [ 'user' => [ 'driver' => 'session', 'provider' => 'user', ], 'admin' => [ 'driver' => 'session', 'provider' => 'admin', ], ], // In this example we are using only 'eloquent' driver 'providers' => [ 'user' => [ 'driver' => 'eloquent', 'model' => 'App\User', ], 'admin' => [ 'driver' => 'eloquent', 'model' => 'App\Admin', ], ], 'passwords' => [ 'user' => [ 'provider' => 'user', 'email' => 'auth.emails.password', 'table' => 'password_resets', 'expire' => 60, ], 'admin' => [ 'provider' => 'admin', 'email' => 'auth.emails.password', 'table' => 'password_resets', 'expire' => 60, ] ] ]; 

3: Чтобы проверить это, мы можем использовать наш файл app \ Http \ Route.php:

 Route::get('/login', function() { $auth = auth()->guard('admin'); $credentials = [ 'email' => 'admin@gmail.com', 'password' => 'password', ]; if ($auth->attempt($credentials)) { return 'Success'; } else { return 'Not Success'; }); 

Спасибо за ответ HoLiC, он работает прямо сейчас, но можете ли вы попытаться реализовать его с классами, которые запускает Laravel? Вам просто нужно добавить маршруты:

 Route::controller('/auth', 'Auth\AuthController'); Route::controller('/password', 'Auth\PasswordController'); 

и создать форму в ресурсах / views / auth / login.blade.php из моего сообщения выше. После этого вы можете использовать маршруты laravel.dev/auth/login и laravel.dev/auth/logout

Механизм стартера не работает и не совместим с multi auth. Если вы проверите, вы можете войти в систему через laravel.dev/auth/login, но только пользователь (нет никакого способа настроить в AuthController или в любом месте для использования администраторов) и действие выхода из системы не работает. Если вы проверите этот признак Illuminate \ Foundation \ Auth \ AuthenticatesUsers, вы увидите, что этот механизм не работает сейчас, например, метод выхода из системы не определяет нигде администратора поставщика:

 Auth::logout(); // not working logout should be smth like Auth::guard($provider)->logout(); 

bartw2k9, чтобы решить пользователь Auth по умолчанию, проверьте настройку Guard в документах. Установка protected $guard = 'admin'; свойство на AuthController сообщает Laravel, для которого используется аутентификация по умолчанию. https://laravel.com/docs/master/authentication#authentication-quickstart