具有多个中间件检查的路由组
Route group with multiple middleware checks
在我的 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']]);
});
我原以为这会解决我的问题,但事实并非如此。
如何创建一个只有管理员和超级管理员才能访问路由的路由组。
重写您的中间件以使用如下设置:
Route::get('/home', ['middleware' => 'roles:admin,superadmin', function () {
echo '/home';
}]);
然后使用 ...
运算符,您可以轻松地将参数 $roles
检查为数组:
// YourMiddleware.php
public function handle($request, Closure $next, ...$roles)
在我的 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']]);
});
我原以为这会解决我的问题,但事实并非如此。
如何创建一个只有管理员和超级管理员才能访问路由的路由组。
重写您的中间件以使用如下设置:
Route::get('/home', ['middleware' => 'roles:admin,superadmin', function () {
echo '/home';
}]);
然后使用 ...
运算符,您可以轻松地将参数 $roles
检查为数组:
// YourMiddleware.php
public function handle($request, Closure $next, ...$roles)