Я пытаюсь аутентификации пользователей и администратора формы user
таблицы и admin
таблицы соответственно. Я использую User
модель, предоставленную laravel из коробки, и создал ее, потому что Admin.
я добавил защитный ключ и ключ провайдера вauth.php.
гвардия
'guards' => [
'user' =>[
'driver' => 'session',
'provider' => 'user',
],
'admin' => [
'driver' => 'session',
'provider' => 'admin',
],
],
Провайдеры
'providers' => [
'user' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'admin' => [
'driver' => 'eloquent',
'model' => App\Admin::class,
]
],
Маршруты
Route::group(['middleware' => ['web']], function () {
// Login Routes.
Route::get('/admin/login','AdminAuth\AuthController@showLoginForm');
Route::post('/admin/login','AdminAuth\AuthController@login');
Route::get('/admin/logout','AdminAuth\AuthController@logout');
// Registration Routes.
Route::get('admin/register', 'AdminAuth\AuthController@showRegistrationForm');
Route::post('admin/register', 'AdminAuth\AuthController@register');
Route::get('/admin', 'AdminController@index');
});
Я создал каталог с именем AuthAdmin
по умолчанию AuthController.php
и PasswordController.php
файлами Laravel . (Пространство имен изменено соответственно)
Во-первых, в документах Laravel упоминалось, что, как указать настраиваемую охрану во время аутентификации, которая не работает.
В документах Laravel упоминается еще один метод - использовать охранника, который тоже не работает.
Было бы полезно, если бы кто-то мог решить проблемы и исправить меня, если я ошибаюсь.
laravel
laravel-5
laravel-5.2
laravel-authorization
imrealashu
источник
источник
protected $guard = 'guard_name'
можно использовать сейчас.Ответы:
После множества копаний и множества вопросов и ответов мне наконец-то удалось поработать над Laravel 5.2 Multi Auth с двумя таблицами, поэтому я пишу ответ на свой вопрос.
Как реализовать Multi Auth в Larvel 5.2
Как уже упоминалось выше. Два стола
admin
иusers
У Laravel 5.2 появилась новая
artisan
команда.php artisan make:auth
он будет генерировать базовый логин / регистр
route
,view
иcontroller
дляuser
таблицы.Сделать
admin
стол какusers
стол для простоты.Контроллер для администратора
app/Http/Controllers/AdminAuth/AuthController
app/Http/Controllers/AdminAuth/PasswordController
(примечание: я только что скопировал эти файлы
app/Http/Controllers/Auth/AuthController
отсюда)config/auth.php
route.php
AdminAuth/AuthController.php
Добавьте два метода и укажите
$redirectTo
и$guard
это поможет вам открыть другую форму входа для администратора
создание промежуточного программного обеспечения для
admin
}
зарегистрировать промежуточное ПО в
kernel.php
использовать это промежуточное ПО,
AdminController
например, вЭто все, что нужно для того, чтобы оно работало, а также чтобы получить JSON для аутентифицированного администратора
Auth::guard('admin')->user()
Редактировать - 1
Мы можем получить доступ к аутентифицированному пользователю напрямую, используя,
Auth::user()
но если у вас есть две таблицы аутентификации, то вы должны использоватьдля выхода
для аутентифицированного пользователя json
Редактировать 2
Теперь вы можете скачать проект, реализованный в Laravel 5.2 Multiauth http://imrealashu.in/code/laravel/multi-auth-with-laravel-5-2-2/
источник
if (Auth :: guard ($ guard) -> check ()) { return redirect ('/'); }
После изменения:if (Auth :: guard ('yourcustomguard') -> check () || Auth :: check ()) { return redirect ('/'); }
В случае, если это кому-нибудь поможет, и это может быть просто из-за моего непонимания промежуточного программного обеспечения, вот что я должен был сделать, чтобы это заработало (в дополнение к шагам, предпринятым @imrealashu) ...
В
route.php
:Это в группе
web
промежуточного программного обеспечения. До этого я пытался поместить его в отдельнуюadmin
группу промежуточного программного обеспечения и даже вauth:admin
группу, но это не сработало, оно работало только для меня, когда я указал промежуточное программное обеспечение в качестве администратора на самом маршруте. Я понятия не имею, почему это так, но я надеюсь, что это спасет других от того, чтобы вырвать их волосы, как я.источник
Route::group(['middleware' => ['admin']], function () { //Admin Routes... });
потому что это не работает для меняЭто очень легко в Laravel 5.6. Просто зайдите
config/auth.php
и добавьте эту строку вproviders
массив:Обратите внимание, что мы использовали
database
для водителя нетeloquent
.Теперь добавьте это в
guards
массив:Теперь мы закончили! Используйте это при работе с таблицей admins:
Приветствия.
источник