web-dev-qa-db-fra.com

Quelqu'un peut-il expliquer Laravel 5.2 Multi Auth avec exemple

J'essaie d'authentifier users et admin de la table user et de la table admin, respectivement. J'utilise le modèle User fourni par laravel et créé de la même manière pour Admin. J'ai ajouté une clé de garde et une clé de fournisseur dans auth.php. 

Gardes 

'guards' => [
    'user' =>[
        'driver' => 'session',
        'provider' => 'user',
    ],
    'admin' => [
        'driver' => 'session',
        'provider' => 'admin',
    ],
],  

Fournisseurs 

'providers' => [
    'user' => [
        'driver' => 'eloquent',
        'model' => App\User::class,
    ],
    'admin' => [
        'driver' => 'eloquent',
        'model' => App\Admin::class,
    ]
],

Routes 

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');
});

J'ai créé un répertoire appelé AuthAdmin où les fichiers par défaut AuthController.php et PasswordController.php de Laravel sont présents. (Espace de noms modifié en conséquence)

Tout d’abord, dans la documentation de Laravel, il est indiqué comment spécifier une protection personnalisée lors de l’authentification, ce qui ne fonctionne pas.
 enter image description here

La documentation de Laravel mentionne une autre méthode consistant à utiliser un protecteur qui ne fonctionne pas aussi. 

 enter image description here

Ce serait avantageux si quelqu'un pouvait résoudre les problèmes et me corriger si je me trompais.

159
imrealashu

C'est très facile avec Laravel 5.6. Allez simplement à config/auth.php et ajoutez cette ligne dans le tableau providers:

'admins' => [
   'driver' => 'database',
   'table' => 'admin_table'
]

Notez que nous avons utilisé database pour le pilote non eloquent.

Ajoutez maintenant ceci au tableau guards:

'admin_guard' => [
   'driver' => 'session',
   'provider' => 'admins'
]

Maintenant nous avons fini! Utilisez ceci lorsque vous travaillez avec admins table:

Auth::guard('admin_guard')->User();

À votre santé.

0
Sky