2016-11-13 52 views
1

我正在嘗試在Laravel 5.3中創建一箇中間件,用於檢查用戶是否爲管理員,以便我可以將一些路由限制爲僅限管理員。在Laravel 5.3中使用中間件

我中間件:

<?php 

namespace App\Http\Middleware; 

use Closure; 

class IsAdmin 
{ 
/** 
* Handle an incoming request. 
* 
* @param \Illuminate\Http\Request $request 
* @param \Closure $next 
* @return mixed 
*/ 
    public function handle($request, Closure $next) 
    { 
     if(!\Auth::user()->hasRole('admin')) { 
      return redirect('login'); 
     } 

     return $next($request); 
    } 
} 

我註冊它的籽粒,添加Ti保護,如下面:

protected $routeMiddleware = [ 
    .... 
    'isadmin' => App\Http\Middleware\IsAdmin::class, 
] 

然後我試圖以確保我的路線:

Route::resource('user', 'UserController')->middleware('isadmin'); 

但我從我的路線文件中得到錯誤:

FatalThrowableError in web.php line 103: 
Call to a member function middleware() on null 

回答

3

您應該應用中間件::group()

Route::group(['middleware' => 'isadmin'], function() { 
    Route::resource('user', 'UserController'); 
}); 
0

UserController構造函數可以使用:

$this->middleware('isadmin'); 

文檔 - Controller Middleware