2016-05-12 27 views
0

Ich versuche Route mit "Auth" und "Auth.admin" Middleware zu filtern, die wie Route 4.2 Filter Laravel 4.2 sein sollte. Aber es funktioniert nicht. Hier ist meine StreckeLaravel 5.1 Admin Rolle in der Middleware mit Entrust

Route::group(['prefix' => 'admin', 'middleware' => ['auth', 'auth.admin']], function() 
{ 
    // ... 
}); 

Kernel.php

protected $routeMiddleware = [ 
    'auth' => \App\Http\Middleware\Authenticate::class, 
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 
    'auth.admin' => \App\Http\Middleware\RedirectIfAdmin::class, 
    'role' => Zizaco\Entrust\Middleware\EntrustRole::class, 
    'permission' => Zizaco\Entrust\Middleware\EntrustPermission::class, 
    'ability' => Zizaco\Entrust\Middleware\EntrustAbility::class, 
]; 

RedirectIfAdmin.php

 <?php 

     namespace App\Http\Middleware; 

     use Closure; 
     use Entrust; 
     class RedirectIfAdmin 
     { 
      /** 
      * Handle an incoming request. 
      * 
      * @param \Illuminate\Http\Request $request 
      * @param \Closure $next 
      * @return mixed 
      */ 
      public function handle($request, Closure $next) 
      { 
       if (!Entrust::hasRole(config('customConfig.roles.admin'))) { 
        return redirect()->route('dashboard') 
           ->with('error', 'Access Denied'); 
       } 
       return $next($request); 
      } 
     } 
+0

Was ist das Problem, vor dem Sie stehen, ein Fehler? – rummykhan

+0

Umleitungsschleife Problem –

+0

können Sie mir zeigen, wo ist Ihre Route ("Dashboard") zeigt.? – rummykhan

Antwort

0

Wie u gesagt, dass ur dashboard Route für den authentifizierten Benutzer ist, Aber ur Überprüfung, wenn der Benutzer ist nicht in admin role senden an das Dashboard, und wenn er an Dashboard gesendet wird, wird er zurückgeleitet, wahrscheinlich aufgrund einer anderen Middleware treten Sie ein, und das senden zurück zur Anmeldung und von der Anmeldung wieder zum Armaturenbrett, also entfernen Sie einfach ! von Ihrem Zustand.

+0

danke, @rummykhan. Ich schicke auch normale Benutzer zum Armaturenbrett, das einige Einrichtung einschränkt. Ich finde jedoch eine Lösung Entrust Rolle: Admin-Funktion, da es keine zusätzliche Middleware benötigt. Vielen Dank noch einmal –