大家好,关于身份验证组件,我正在做一些测试以更好地理解该工具,在概念探索中,我希望授权经过身份验证的管理员用户访问任何操作,但如果授权用户仅具有“主管”角色能够在“RequestsController.php”中进行操作索引、查看和编辑,我正在尝试这种方法:1)允许管理员角色的所有内容并拒绝 AppController.php 中其他任何人的所有内容。2)在“RequestsController.php”中明确允许“主管”并拒绝任何其他角色。
值得怀疑的是,经过一些测试,如果我在 AppController.php 中授权管理员用户,则重定向只允许我转到 /webroot/,但如果我在 RequestsController.php 中允许管理员角色。我可以毫无问题地看到请求
AppController 中的 IsAuthorize 方法
public function isAuthorized($user)
{
//privileges 1 means admin
if ($user['privileges']==1){
debug($user);
return true;
} else {
debug($user);
return false;
}
}
请求控制器中的 IsAuthorize 方法
public function isAuthorized($user)
{
//privileges 9 means supervisor
if ($user['privileges']==9){
debug($user);
$action = $this->request->getParam('action');
if (in_array($action, ['index', 'view', 'edit'])) {
debug($user);
return true;
}
return false;
} else {
debug($user);
return false;
}
}
因为我不清楚 isAuthorized 函数的处理顺序,或者为什么重定向到请求(即使它是“AppController.php”或“RequestsController.php”)所以这让我觉得我必须明确授权所有控制器中的管理员角色