Кто-нибудь знает, как использовать multi authenticate в laravel 5.2!
Я хочу использовать это, но я не знаю, как это сделать?
у кого-нибудь есть учебник или проект, настраивающий мульти-аутентификацию?
Вам нужны две таблицы users
и admins
Запустите команду, следующую команду, чтобы создать встроенный auth
php artisan make:auth
Две модели пользователей (уже существуют) и Admin
<?php namespace App; use Illuminate\Foundation\Auth\User as Authenticatable; class Admin extends Authenticatable { }
Сначала мы создаем две модели: пользователь и администратор
Затем мы обновляем файл 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, ] ] ];
Теперь измените файл app / Http / kernel.php:
protected $middleware = [ \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, \Illuminate\Session\Middleware\StartSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class ]; protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class ], 'api' => [ 'throttle:60,1', ], ];
Создайте LoginController
и установите в нем следующий код.
Примечание. Вам необходимо создать страницы входа для «пользователя», а также «admin». Затем вам необходимо отправить запросы формы входа в соответствующую функцию контроллера, т.е. userLogin()
или adminLogin()
.
namespace App\Http\Controllers; use Auth, Input; use App\User; use App\Admin; class LoginController extends Controller { public function userLogin(){ $input = Input::all(); if(count($input) > 0){ $auth = auth()->guard('user'); $credentials = [ 'email' => $input['email'], 'password' => $input['password'], ]; if ($auth->attempt($credentials)) { return redirect()->action('LoginController@profile'); } else { echo 'Error'; } } else { return view('user.login'); } } public function adminLogin(){ $input = Input::all(); if(count($input) > 0){ $auth = auth()->guard('admin'); $credentials = [ 'email' => $input['email'], 'password' => $input['password'], ]; if ($auth->attempt($credentials)) { return redirect()->action('LoginController@profile'); } else { echo 'Error'; } } else { return view('admin.login'); } } public function profile(){ if(auth()->guard('admin')->check()){ pr(auth()->guard('admin')->user()->toArray()); } if(auth()->guard('user')->check()){ pr(auth()->guard('user')->user()->toArray()); } } }
В большинстве случаев я просто добавляю поле в таблицу пользователя с именем usertype и передаю соответствующие значения, такие как 0 = admin, 1 = пользователь и т. Д.
Этот подход помогает избежать ненужной головной боли при создании разных пользовательских ролей или типов.
Хотя это может показаться не идеальным, но помогает экономить много времени.