如何在Laravel 5.2中使用OR条件将多个参数传递给中间件

马努斯

我试图设置权限来访问两个不同用户角色Admin,Normal_User的操作,如下所示。

Route::group(['middleware' => ['role_check:Normal_User','role_check:Admin']], function() {
        Route::get('/user/{user_id}', array('uses' => 'UserController@showUserDashboard', 'as' => 'showUserDashboard'));
    });

管理员或Normal_user均可访问此路由。但是在这种中间件配置中,用户必须同时是Admin和Normal_User。如何在中间件参数传递中添加OR条件?还是有其他授予权限的方法?

以下是我的中间件

public function handle($request, Closure $next, $role)
    {
        if ($role != Auth::user()->user_role->role ) {
            if ($request->ajax() || $request->wantsJson()) {
                return response('Unauthorized.', 401);
            } else {
                return response('Unauthorized.', 401);
            }
        }
        return $next($request);
    }

有人可以回复吗?

克里斯

要添加多个参数,您需要用逗号分隔它们:

Route::group(['middleware' => ['role_check:Normal_User,Admin']], function() {
        Route::get('/user/{user_id}', array('uses' => 'UserController@showUserDashboard', 'as' => 'showUserDashboard'));
    });

然后,您可以像这样在中间件中访问它们:

public function handle($request, Closure $next, $role1, $role2) {..}

由您决定要执行的逻辑,没有自动的方式说“或”。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章