我正在开发Laravel ACL系统。我有一个用户表,一个角色表和一个权限表。当我使用中间件和内部中间件检查授予用户权限时,我使用的是explode()
函数。此功能仅显示其他权限不包含的第一个权限。
这是我的控制人;
function __construct()
{
$this->middleware('auth');
$this->middleware('HasPermission:Role-Read,Role-Update,Role-Delete');
}
My Middleware.
public function handle($request, Closure $next,$permissions='')
{
$permissions_array = explode(',', $permissions);
dd($permissions_array);
foreach($permissions_array as $permission){
if(Auth::user()->hasPermission($permission)){
return $next($request);
}
}
return redirect()->back();;
}
使用dd()
函数时的结果。
array:1 [▼
0 => "Role-Read"
]
答案 0 :(得分:1)
控制器
$this->middleware('HasPermission:Role-Read,Role-Update,Role-Delete');
中间件 使用...访问变量参数
public function handle($request, Closure $next, ...$permissions)
{
foreach($permissions_array as $permission){
if(Auth::user()->hasPermission($permission)){
return $next($request);
}
}
return redirect()->back();;
}
或者您可以使用
$this->middleware('HasPermission:Role-Read|Role-Update|Role-Delete');
中间件
$permissions_array = explode('|', $permissions);