Route middelware 中的多个参数 Laravel 不起作用



我有问题,在我的Route::middleware中使用多个参数对我不起作用。我正在尝试分配只有超级用户管理员角色才能访问的特定路由。

当我只使用:

role:superuser 

它工作正常,但是当我添加第二个参数时,例如:

role:superuser,admin

当我为自己分配管理员角色但仍适用于超级用户角色时,它会失败。

我很困惑,所以任何帮助将不胜感激!


这是我的角色中间件:

namespace AppHttpMiddleware;
use Closure;
class RoleMiddleware 
{ 
/** 
* Handle an incoming request. 
* 
* @param IlluminateHttpRequest $request 
* @param Closure $next 
* @param string $roles 
* @return mixed 
*/ 
public function handle($request, Closure $next, ...$roles) 
{ 
$user = $request->user();
if ($user && $user->isSuperuser($roles)) {
return $next($request);
}
return redirect('/home')->withError('U heeft niet de juiste rechten!');
}
}

这是我的用户模型中的 isSuperuser 方法:

public function isSuperuser(...$roles)
{
if ($roles) {
return $this->roles == $roles;
}
return $this->roles;
}

最后但并非最不重要的一点是,我的中间件路由/网络代码:

Route::get('/users', 'UsersController@index')->middleware(['role:superuser,admin']);

顺便说一句:该方法被称为'isSuperuser'但这只是一个名称。它还必须在某个时候接受管理员角色。

使用|而不是像这样,

Route::get('/users', 'UsersController@index')->middleware(['role:superuser|admin']);

最新更新