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

时间:2019-08-08 13:29:24

标签: laravel laravel-middleware laravel-route

在laravel项目中,我扮演了自己的角色并将其添加到中间件中,因此我可以使用 auth.admin auth.superadmin 保护特定路由。

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

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

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

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

如何创建仅管理员和超级管理员可以访问该路由的路由组。

1 个答案:

答案 0 :(得分:1)

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

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

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

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