Laravel路由中的多个参数middelware不起作用
问题描述:
我有问题,在我的Route::middleware
中使用多个参数对我来说不起作用。我试图分配一个特定的路线,只能访问超级用户和admin角色。Laravel路由中的多个参数middelware不起作用
当我只是用:
role:superuser
它工作正常,但是当我添加第二个参数,如:
role:superuser,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', '[email protected]')->middleware(['role:superuser,admin']);
btw:该方法被称为'isSuperuser'
但这只是一个名称。它也必须在某个时候接受角色。
答
使用|
代替,
这样的:
Route::get('/users', '[email protected]')->middleware(['role:superuser|admin']);
+0
感谢您的回复,但不幸的是它不工作。 – Brnovich
若要应用多个中间件的路线,我认为你必须添加项目到一个数组。 I.e ....->中间件(['role:superuser','role:admin']); – ochhii