Ich versuche zu authentifizieren Benutzer und Admin - Form user
Tabelle und admin
jeweils Tabelle. Ich verwende das User
von Laravel bereitgestellte Modell und habe es erstellt, da Admin.
ich einen Schutzschlüssel und einen Providerschlüssel hinzugefügt habeauth.php.
Wachen
'guards' => [
'user' =>[
'driver' => 'session',
'provider' => 'user',
],
'admin' => [
'driver' => 'session',
'provider' => 'admin',
],
],
Anbieter
'providers' => [
'user' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'admin' => [
'driver' => 'eloquent',
'model' => App\Admin::class,
]
],
Routen
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');
});
Ich habe ein Verzeichnis mit dem Namen AuthAdmin
Laravels Standard AuthController.php
und PasswordController.php
Dateien erstellt. (Namespace entsprechend geändert)
Zunächst wurde in Laravels Dokumenten erwähnt, wie man einen benutzerdefinierten Schutz bei der Authentifizierung wie folgt angibt, was nicht funktioniert.
In Laravels Dokumenten wird eine andere Methode erwähnt, um einen Schutz zu verwenden, der auch nicht funktioniert.
Es wäre von Vorteil, wenn jemand die Probleme lösen und mich korrigieren könnte, wenn ich falsch liege.
quelle
protected $guard = 'guard_name'
kann jetzt verwendet werden.Antworten:
Nach vielem Graben und vielen Fragen und Antworten habe ich es endlich geschafft, Laravel 5.2 Multi Auth mit zwei Tabellen zu bearbeiten. Also schreibe ich die Antwort auf meine eigene Frage.
So implementieren Sie Multi Auth in Larvel 5.2
Wie oben erwähnt. Zwei Tisch
admin
undusers
Laravel 5.2 hat einen neuen
artisan
Befehl.php artisan make:auth
wird es grundlegende Login / Register erzeugen
route
,view
undcontroller
füruser
Tabelle.Machen Sie der Einfachheit halber eine
admin
Tabelle alsusers
Tabelle.Controller für Administratoren
app/Http/Controllers/AdminAuth/AuthController
app/Http/Controllers/AdminAuth/PasswordController
(Hinweis: Ich habe diese Dateien gerade von
app/Http/Controllers/Auth/AuthController
hier kopiert )config/auth.php
route.php
AdminAuth/AuthController.php
Fügen Sie zwei Methoden hinzu und geben Sie
$redirectTo
und an$guard
Es wird Ihnen helfen, ein anderes Anmeldeformular für den Administrator zu öffnen
Erstellen einer Middleware für
admin
}}
Middleware registrieren in
kernel.php
Verwenden Sie diese Middleware
AdminController
z.Das ist alles, was benötigt wird, um es zum Laufen zu bringen und um die Verwendung von authentifizierten Administratoren zu ermöglichen
Auth::guard('admin')->user()
Bearbeiten - 1
Wir können direkt auf authentifizierte Benutzer zugreifen,
Auth::user()
aber wenn Sie zwei Authentifizierungstabellen haben, müssen Sie verwendenzum Abmelden
für authentifizierten Benutzer json
Bearbeiten 2
Jetzt können Sie das von Laravel 5.2 Multiauth implementierte Projekt http://imrealashu.in/code/laravel/multi-auth-with-laravel-5-2-2/ herunterladen.
quelle
if (Auth :: guard ($ guard) -> check ()) { return redirect ('/'); }
Nach der Änderung:if (Auth :: guard ('yourcustomguard') -> check () || Auth :: check ()) { return redirect ('/'); }
Falls dies jemandem hilft und dies möglicherweise nur auf mein mangelndes Verständnis der Middleware zurückzuführen ist, musste ich Folgendes tun, um dies zum Laufen zu bringen (zusätzlich zu den von @imrealashu unternommenen Schritten) ...
In
route.php
:Dies ist in der
web
Middleware-Gruppe. Vorher habe ich versucht, es in eine separateadmin
Middleware-Gruppe und sogar in eineauth:admin
Gruppe zu stellen, aber das hat nicht funktioniert. Es hat nur für mich funktioniert, als ich die Middleware als Administrator auf der Route selbst angegeben habe. Ich habe keine Ahnung, warum das so ist, aber ich hoffe, es erspart anderen, sich die Haare auszureißen, wie ich es getan habe.quelle
Route::group(['middleware' => ['admin']], function () { //Admin Routes... });
bei mir nicht funktioniertIn Laravel 5.6 ist das sehr einfach. Gehen Sie einfach zu
config/auth.php
und fügen Sie diese Zeile improviders
Array hinzu:Beachten Sie, dass wir
database
für Treiber nicht verwendet habeneloquent
.Fügen Sie dies nun dem
guards
Array hinzu:Jetzt sind wir fertig! Verwenden Sie dies, wenn Sie mit der Admins-Tabelle arbeiten:
Prost.
quelle