我有问题,在我的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']);