2016-05-12 76 views
0

我正在嘗試使用'auth'和'auth.admin'中間件來過濾路由,它應該像laravel 4.2的Route :: filter一樣。但它不起作用。 這裏是我的路線laravel 5.1管理員在使用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

你面臨的問題是什麼,有什麼錯誤? – rummykhan

+0

重定向循環問題 –

+0

你能告訴我你的路線('儀表板')指向的位置嗎? – rummykhan

回答

0

如u說,烏拉圭回合dashboard路由是驗證用戶, 但是,如果用戶UR檢查不在admin role發送到儀表板,並且當他被髮送到儀表板時,他被重定向回來,可能是由於另一箇中間件踢,併發回登錄和從登錄再次儀表板,所以只要刪除!從你的條件。

+0

謝謝你,@rummykhan。我還將普通用戶發送到限制某些設施的儀表板。然而,我發現一個解決方案Entrust的角色:管理員功能,因爲它不需要額外的中間件。 再次感謝您 –

相關問題