我有一个角色中间件。当我从控制器以字符串形式传递给角色时,它可以正常工作,但是以数组形式传递时,则不能工作。这样中间件可以正常工作。
$this->middleware('HasRole:User|Admin|Author')->except(['userEdit','roleEdit','permissionEdit','userUpdate']);
但是当我这样更改时,它不起作用。
$this->middleware('HasRole:User,Admin,Author')->except(['userEdit','roleEdit','permissionEdit','userUpdate']);
这是我的中间件。
public function handle($request, Closure $next, ...$role)
{
$roles=is_array($role)? $role: explode('|', $role);
//dd($roles);
if($request->user()===null)
{
return response('Insufficient Access',401);
}
if($request->user()->hasAnyRole($roles) || !$roles)
{
return $next($request);
}
return response('Insufficient Permission',401);
//return $next($request);
}
答案 0 :(得分:1)
控制器
public function __construct()
{
$this->middleware('HasRole:User,Admin,Author')->except(['userEdit','roleEdit','permissionEdit','userUpdate']);
}
您的中间件
在这里http://php.net/manual/en/functions.arguments.php#functions.variable-arg-list阅读有关... $
的信息public function handle($request, Closure $next, ...$roles)
{
// $roles is array('User', 'Admin', 'Author')
// 0 => 'User',
// 1 => 'Admin',
// 2 => 'Author'
if($request->user()===null)
{
return response('Insufficient Access',401);
}
if($request->user()->hasAnyRole($roles) || !$roles)
{
return $next($request);
}
return response('Insufficient Permission',401);
//return $next($request);
}