在 Laravel 5.3 中使用中间件
Using middleware in 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
您应该使用 ::group()
:
应用中间件
Route::group(['middleware' => 'isadmin'], function () {
Route::resource('user', 'UserController');
});
在UserController
构造函数中你可以使用:
$this->middleware('isadmin');
我正在尝试在 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
您应该使用 ::group()
:
Route::group(['middleware' => 'isadmin'], function () {
Route::resource('user', 'UserController');
});
在UserController
构造函数中你可以使用:
$this->middleware('isadmin');