2016-11-13 88 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

相关问题