Próbuję uwierzytelniać użytkowników i administratora formularz user
stół i admin
stolik odpowiednio. Używam User
modelu dostarczonego przez laravel po wyjęciu z pudełka i utworzyłem to samo, ponieważ Admin.
dodałem klucz strażnika i klucz dostawcy doauth.php.
Gwardia
'guards' => [
'user' =>[
'driver' => 'session',
'provider' => 'user',
],
'admin' => [
'driver' => 'session',
'provider' => 'admin',
],
],
Dostawcy
'providers' => [
'user' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'admin' => [
'driver' => 'eloquent',
'model' => App\Admin::class,
]
],
Trasy
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');
});
Utworzyłem katalog o nazwie, w AuthAdmin
którym znajdują się ustawienia domyślne Laravel AuthController.php
i PasswordController.php
pliki. (Przestrzeń nazw odpowiednio zmodyfikowana)
Po pierwsze, w dokumentach Laravela wspomniałem, że jak określić ochronę niestandardową podczas uwierzytelniania w ten sposób, co nie działa.
W dokumentach Laravela wspomniano o innej metodzie użycia strażnika, który również nie działa.
Byłoby korzystne, gdyby ktoś mógł rozwiązać problemy i poprawić mnie, jeśli się mylę.
źródło
protected $guard = 'guard_name'
może być teraz używany.Odpowiedzi:
Po wielu poszukiwaniach i wielu pytaniach i odpowiedziach w końcu udało mi się pracować z Laravel 5.2 Multi Auth z dwoma tabelami, więc piszę odpowiedź na moje własne pytanie.
Jak zaimplementować Multi Auth w Larvel 5.2
Jak wspomniano powyżej. Dwa stoliki
admin
iusers
Laravel 5.2 ma nowe
artisan
polecenie.php artisan make:auth
wygeneruje podstawowe login / register
route
,view
acontroller
nauser
stole.Zrób
admin
stół jakousers
stół dla prostoty.Kontroler dla administratora
app/Http/Controllers/AdminAuth/AuthController
app/Http/Controllers/AdminAuth/PasswordController
(uwaga: właśnie skopiowałem te pliki
app/Http/Controllers/Auth/AuthController
stąd)config/auth.php
route.php
AdminAuth/AuthController.php
Dodaj dwie metody i określ
$redirectTo
i$guard
pomoże ci otworzyć kolejny formularz logowania dla administratora
tworzenie oprogramowania pośredniczącego dla platformy
admin
}
zarejestruj oprogramowanie pośredniczące w
kernel.php
użyj tego oprogramowania pośredniego
AdminController
np.To wszystko jest potrzebne, aby działał, a także aby uzyskać plik JSON uwierzytelnionego użytku administratora
Auth::guard('admin')->user()
Edycja - 1
Możemy uzyskać dostęp do uwierzytelnionego użytkownika bezpośrednio za pomocą,
Auth::user()
ale jeśli masz dwie tabele uwierzytelniania, musisz użyćdo wylogowania
dla uwierzytelnionego użytkownika json
Edytuj 2
Teraz możesz pobrać projekt zaimplementowany w Laravel 5.2 Multiauth http://imrealashu.in/code/laravel/multi-auth-with-laravel-5-2-2/
źródło
if (Auth :: guard ($ guard) -> check ()) { return redirect ('/'); }
Po zmianie:if (Auth :: guard ('yourcustomguard') -> check () || Auth :: check ()) { return redirect ('/'); }
Na wypadek, gdyby to komukolwiek pomogło, a może to być spowodowane moim brakiem zrozumienia oprogramowania pośredniczącego, oto, co musiałem zrobić, aby to działało (oprócz kroków podjętych przez @imrealashu) ...
W
route.php
:To jest w
web
grupie oprogramowania pośredniego. Wcześniej próbowałem umieścić go w osobnejadmin
grupie oprogramowania pośredniego, a nawet wauth:admin
grupie, ale to nie zadziałało, działało tylko dla mnie, gdy określiłem oprogramowanie pośrednie jako administratora na samej trasie. Nie mam pojęcia, dlaczego tak jest, ale mam nadzieję, że oszczędza to innym wyrywania włosów tak, jak ja.źródło
Route::group(['middleware' => ['admin']], function () { //Admin Routes... });
ponieważ nie działa dla mnieW Laravel 5.6 jest to bardzo łatwe. Po prostu przejdź do
config/auth.php
i dodaj tę linię wproviders
tablicy:Zauważ, że użyliśmy
database
dla sterownika nieeloquent
.Teraz dodaj to do
guards
tablicy:Gotowe! Użyj tego podczas pracy z tabelą administratorów:
Twoje zdrowie.
źródło