具有多个中间件检查的路由组

Route group with multiple middleware checks

在我的 laravel 项目中,我创建了自己的角色并将它们添加到中间件,这样我就可以使用 auth.adminauth.superadmin 来保护特定的路由。

我的超级管理员角色有一个 Route::Group,我的管理员角色有一个 Route::Group,标准身份验证检查有一个 Route:Group。

现在我有一个必须由超级管理员和管理员访问的特定路由。 当我将路由放在管理员组或超级管理员组中时,它会起作用。但是,当我尝试将它放在两者中或创建一个路由组时,我会检查这两个角色,但它不会。 然后我尝试像这样制作 Route::Group:

Route::group(['middleware' => ['auth','auth.admin', 'auth.superadmin']], function() {
        Route::resource('user', 'UserController', ['except' => ['show']]);
});

我原以为这会解决我的问题,但事实并非如此。

如何创建一个只有管理员和超级管理员才能访问路由的路由组。

重写您的中间件以使用如下设置:

Route::get('/home', ['middleware' => 'roles:admin,superadmin', function () {
   echo '/home';
}]);

然后使用 ... 运算符,您可以轻松地将参数 $roles 检查为数组:

// YourMiddleware.php
public function handle($request, Closure $next, ...$roles)