自定义身份验证中间件 - Laravel 5

时间:2015-05-20 22:50:34

标签: php authentication laravel middleware

Laravel 5附带的auth中间件非常适合仅限用户使用的路由和控制器,但是我想添加检查用户是否是管理员的功能。

目前,在我的控制器中,每个班级都有这个:

if (Auth::user()->level <= 1) {
    // admin can do these actions
} else {
    // redirect
}

这非常多余,我想看看我的选择是什么。由于我想保留用于用户身份验证的原始auth中间件,我应该构建一个新的用于管理员身份验证的中间件,还是可以在可以解释我的代码的原始auth中间件中进行一些简单的更改以上?

1 个答案:

答案 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);
    }
});