J'essaye d'authentifier les utilisateurs et la table et la table de forme d' administration respectivement. J'utilise le modèle fourni par laravel hors de la boîte et je l'ai créé car j'ai ajouté une clé de garde et une clé de fournisseur dansuser
admin
User
Admin.
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,
]
],
Itinéraires
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ù la valeur par défaut de Laravel AuthController.php
et les PasswordController.php
fichiers sont présents. (Espace de noms modifié en conséquence)
Tout d'abord, dans la documentation de Laravel, il est indiqué que la façon de spécifier une garde personnalisée tout en s'authentifiant comme celle-ci ne fonctionne pas.
Il existe une autre méthode mentionnée dans la documentation de Laravel pour utiliser un garde qui ne fonctionne pas trop.
Il serait avantageux que quelqu'un puisse résoudre les problèmes et me corriger si je me trompe.
la source
protected $guard = 'guard_name'
peut être utilisé maintenant.Réponses:
Après beaucoup de fouilles et beaucoup de questions et réponses, j'ai finalement réussi à travailler Laravel 5.2 Multi Auth avec deux tables, donc j'écris la réponse à ma propre question.
Comment implémenter Multi Auth dans Larvel 5.2
Comme mentionné ci-dessus. Deux table
admin
etusers
Laravel 5.2 a une nouvelle
artisan
commande.php artisan make:auth
il va générer login / registre de base
route
,view
etcontroller
pouruser
table.Faites un
admin
tableau commeusers
tableau pour plus de simplicité.Controller For Admin
app/Http/Controllers/AdminAuth/AuthController
app/Http/Controllers/AdminAuth/PasswordController
(note: je viens de copier ces fichiers à partir d'
app/Http/Controllers/Auth/AuthController
ici)config/auth.php
route.php
AdminAuth/AuthController.php
Ajoutez deux méthodes et spécifiez
$redirectTo
et$guard
cela vous aidera à ouvrir un autre formulaire de connexion pour l'administrateur
création d'un middleware pour
admin
}
enregistrer le middleware dans
kernel.php
utiliser ce middleware par
AdminController
exemple,C'est tout ce qui est nécessaire pour le faire fonctionner et aussi pour obtenir json d'utilisation authentifiée par l'administrateur
Auth::guard('admin')->user()
Edit - 1
Nous pouvons accéder directement à l'utilisateur authentifié en utilisant
Auth::user()
mais si vous avez deux tables d'authentification, vous devez utiliserpour la déconnexion
pour l'utilisateur authentifié json
Modifier 2
Vous pouvez maintenant télécharger le projet implémenté Laravel 5.2 Multiauth http://imrealashu.in/code/laravel/multi-auth-with-laravel-5-2-2/
la source
if (Auth :: guard ($ guard) -> check ()) { return redirect ('/'); }
Après la modification:if (Auth :: guard ('yourcustomguard') -> check () || Auth :: check ()) { return redirect ('/'); }
Au cas où cela aiderait quelqu'un, et cela pourrait simplement être dû à mon manque de compréhension du middleware, voici ce que je devais faire pour que cela fonctionne (en plus des mesures prises par @imrealashu) ...
Dans
route.php
:C'est dans le
web
groupe middleware. Avant cela, j'ai essayé de le placer dans unadmin
groupe de middleware séparé et même dans unauth:admin
groupe, mais cela ne fonctionnait pas, cela ne fonctionnait pour moi que lorsque je spécifiais le middleware en tant qu'administrateur sur la route elle-même. Je ne sais pas pourquoi mais j'espère que cela évitera aux autres de s'arracher les cheveux comme je l'ai fait.la source
Route::group(['middleware' => ['admin']], function () { //Admin Routes... });
car cela ne fonctionne pas pour moiC'est très simple dans laravel 5.6. Allez simplement à
config/auth.php
et ajoutez cette ligne dans leproviders
tableau:Notez que nous avons utilisé
database
pour le pilote noneloquent
.Maintenant, ajoutez ceci au
guards
tableau:Maintenant c'est fini! Utilisez ceci lorsque vous travaillez avec la table des administrateurs:
À votre santé.
la source