2016-07-09 13 views
2

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?

+0

Haben Sie auch den 'provider' gemacht, um das' Admin: class' Modell zu verwenden? Wie sieht die Auth Middleware aus? – jycr753

+0

Sie können erneut überprüfen – mojoblanco

+1

Sie müssen sie in separate Middleware-Gruppe legen, um zu überprüfen, welcher Benutzer als welche Rolle angemeldet ist. –

Antwort

Verwandte Themen