Ich benutze Laravel 5.2 und versuche mich mit mehr als einem Auth-Wächter anzumelden, aber nur der Standard funktioniert.Laravel 5.2 Multi Auth nicht einloggen
Dies ist mein Code.
Schützer
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
],
'admin' => [
'driver' => 'session',
'provider' => 'admins'
]
],
Providers
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'admins' => [
'driver' => 'eloquent',
'model' => App\Admin::class,
],
],
Authenticate Middleware
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->guest()) {
if ($request->ajax() || $request->wantsJson()) {
return response('Unauthorized.', 401);
} else {
return redirect()->guest('login');
}
}
return $next($request);
}
Routen
Route::get('/foo', function(){
if (Auth::guard('web')->attempt(['email' => '[email protected]', 'password' => 'gareth'])){
return redirect('/');
}else{
return 'No!';
}
});
Route::get('/bar', function(){
if (Auth::guard('admin')->attempt(['email' => '[email protected]', 'password' => 'password'])){
return redirect('/');
}else{
return 'No!';
}
});
Beide Routen true zurück, wenn der Versuch Methode aufgerufen wird, sondern nur die Web Wache meldet sich tatsächlich ein Benutzer in, aber wenn ich schalten Sie die Standard-guard dem Server-Betreiber, die Admin-Guard arbeitet und die Netzwächter tut es nicht.
Kann mir jemand bei der Lösung helfen?
Haben Sie auch den 'provider' gemacht, um das' Admin: class' Modell zu verwenden? Wie sieht die Auth Middleware aus? – jycr753
Sie können erneut überprüfen – mojoblanco
Sie müssen sie in separate Middleware-Gruppe legen, um zu überprüfen, welcher Benutzer als welche Rolle angemeldet ist. –