我有问题,在Route::middleware
中使用多个参数对我不起作用。我正在尝试分配只有超级用户和 admin 角色可访问的特定路由。
当我使用时:
role:superuser
它工作正常,但是当我添加第二个参数时:
role:superuser,admin
当我为自己分配 admin 角色但仍然适用于超级用户角色时失败。
我很困惑所以任何帮助都会受到赞赏!
这是我的RoleMiddleware:
namespace App\Http\Middleware;
use Closure;
class RoleMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $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'
,但这只是一个名称。它还必须在某个时候接受 admin 角色。
答案 0 :(得分:0)
使用|
代替,
,如下所示:
Route::get('/users', 'UsersController@index')->middleware(['role:superuser|admin']);