2016-11-13 17 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を追加し、カーネルに登録:

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

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

その後、私は私のルートを確保しようとします

私のルートファイルからエラーが表示されます:

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

関連する問題