【问题标题】:Customizing auth middleware - Laravel 5自定义身份验证中间件 - Laravel 5
【发布时间】:2015-08-02 09:51:33
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: php authentication laravel middleware


    【解决方案1】:

    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...
    });
    

    【讨论】:

    • 很高兴知道这将在 5.1 中添加 - 同时,我可以创建什么样的路由过滤器?啊,我才看到你的更新,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-20
    • 2015-02-23
    • 2015-07-01
    • 2014-11-15
    • 2014-03-30
    • 2016-04-18
    相关资源
    最近更新 更多