Laravel 5附带的auth
中间件非常适合仅限用户使用的路由和控制器,但是我想添加检查用户是否是管理员的功能。
目前,在我的控制器中,每个班级都有这个:
if (Auth::user()->level <= 1) {
// admin can do these actions
} else {
// redirect
}
这非常多余,我想看看我的选择是什么。由于我想保留用于用户身份验证的原始auth
中间件,我应该构建一个新的用于管理员身份验证的中间件,还是可以在可以解释我的代码的原始auth
中间件中进行一些简单的更改以上?
答案 0 :(得分:4)
Laravel 5.0中的中间件不支持参数(这将在即将发布的5.1版本中添加)。
您可以选择为此创建单独的中间件,或使用路由过滤器。
您可以通过RouteServiceProvider
的{{1}}方法创建路线过滤器:
boot
然后在您的路线中使用该过滤器:
$router->filter('userLevel', function($route, $request, $level)
{
$user = auth()->user();
if ( ! $user || $user->level > $level)
{
return response('Unauthorized', 401);
}
});