2017-03-02 2 views
0

habe ich eine Middleware AdminLaravel 5.3: Erstellen Admin Middleware

public function handle($request, Closure $next) 
{ 
    if (Auth::guard($guard)->check()) { 
     if (Auth::user()->isAdmin()) 
      return redirect('/list_host'); 
     else { 
      // return $next($request); 
      return redirect('/home'); 
     } 
    } 
} 

IsAdmin wie folgt aussieht genannt:

public function isAdmin() 
{ 
    return $this->is_admin; 
} 

Und ihre Ich möchte überprüfen, ob der Benutzer angemeldet ist und Admin- Rechte. Ich habe es auch zu Kernel.php

protected $routeMiddleware = [ 
    'auth'  => \Illuminate\Auth\Middleware\Authenticate::class, 
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 
    'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, 
    'can'  => \Illuminate\Auth\Middleware\Authorize::class, 
    'guest'  => \App\Http\Middleware\RedirectIfAuthenticated::class, 
    'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 
    'admin'  => \App\Http\Auth\Middleware\Admin::class, 
]; 

Und ich benutze es dann in den Routen/web.php

Route::get('/list_hosts', function() { 
    return view('/list_hosts'); 
})->middleware('admin'); 

Leider auch keine Admins die Website anzeigen können. Irgendwelche Vorschläge?

+0

Woher weiß das System, ob ein Benutzer Administratorrechte hat? – Onix

+0

verwandt: http://stackoverflow.com/questions/34614753/can-anyone-explain-laravel-5-2-multi-auth-with-example –

+1

sind Sie nicht zufällig in eine Endlosschleife mit den Weiterleitungen fallen? Die Middleware leitet Admin für immer um, nein? –

Antwort

1

Zunächst sollte Ihre Middleware in jedem Fall etwas zurückgeben. In Ihrem Beispiel gibt es bei Ihrem ersten if failes keine Rückgabe mehr.

Das zweite Problem ist, dass Ihre Middleware leitet Route /list_hosts, die eine Endlosschleife zu sich selbst verursachen.

Versuchen Sie, diese

public function handle($request, Closure $next) 
{ 
    return Auth::user()->isAdmin() ? $next($request) : redirect('/home'); 
} 

Off zu verwenden: Jedoch habe ich sehr nach der Verwendung von Klammern reccomend jeder, wenn statetement, auch wenn Sie nur eine Zeile innerhalb haben.

+0

Danke, es zu lösen. Ich hatte dummerweise eine andere Route mit auth-Middleware, also nutzte sie meine nicht. : D – AppleForTheKing