繁体   English   中英

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

[英]Customizing auth middleware - Laravel 5

Laravel 5随附的已交付auth中间件非常适合仅用于用户的路由和控制器,但是我想添加一种功能,还可以检查用户是否是管理员。

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

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

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

Laravel 5.0中的中间件不支持参数(将在即将发布的5.1版本中添加)。

您的选择是为此创建单独的中间件,或使用路由过滤器。


您可以通过将其放入RouteServiceProviderboot方法中来创建路由过滤器:

$router->filter('userLevel', function($route, $request, $level)
{
    $user = auth()->user();

    if ( ! $user || $user->level > $level)
    {
        return response('Unauthorized', 401);
    }
});

然后在您的路线中使用该过滤器:

Route::group(['before' => 'userLevel:1'], function($router)
{
    // define routes...
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM