我正在尝试将访问操作的权限设置为两个不同的用户角色 Admin、Normal_User,如下所示。
Route::group(['middleware' => ['role_check:Normal_User','role_check:Admin']], function() {
Route::get('/user/{user_id}', array('uses' => 'UserController@showUserDashboard', 'as' => 'showUserDashboard'));
});
该路由可由 Admin 或 Normal_user 访问。但在此中间件配置中,用户需要同时是 Admin 和 Normal_User。如何在中间件参数传递中添加 OR 条件?或者还有其他方法可以授予权限吗?
以下是我的中间件
public function handle($request, Closure $next, $role)
{
if ($role != Auth::user()->user_role->role ) {
if ($request->ajax() || $request->wantsJson()) {
return response('Unauthorized.', 401);
} else {
return response('Unauthorized.', 401);
}
}
return $next($request);
}
有人可以回复吗?
您可以在 PHP 5.6+ 中使用 3 点 (...) 语法
你的中间件的句柄函数
public function handle($request, Closure $next, ...$roles)
{
foreach($roles as $role){
if ($request->user()->hasRole($role)){
return $next($request);
}
}
abort(404);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)