【发布时间】:2023-03-24 17:07:01
【问题描述】:
所以我有一个案例,我有一个动作会(基于某些条件)翻转到同一控制器中的另一个动作。
现在,初始操作只允许具有给定角色(教练或培训师)的人员执行,但后续操作仅允许教练执行。
但是,由于他们没有直接访问第二个操作(仅通过中间操作),因此身份验证组件不会阻止它触发。这是一些代码:
public function isAuthorized($user) {
switch($this->action) {
case "bulkAction":
if ($user['role'] == ('coach' || 'trainer') ) {
return true;
}
break;
case "bulkDelete":
if ($user['role'] == 'coach') {
return true;
}
break;
}
return parent::isAuthorized($user);
}
public function bulkAction() {
switch($this->request->data['Action']) {
case "delete":
$this->bulkDelete();
break;
}
}
同样,当 bulkAction 将数据发送到 bulkDelete 操作时,Auth 似乎完全被绕过了,并且该操作通过了。如何确保其他操作调用的操作仍会根据控制器的 isAuthorized 回调进行检查?
【问题讨论】:
-
你试过用setAction代替直接调用action方法吗?如果您将以上内容改写为问题,那将是很好的。现在它只是一个声明。
-
编辑添加实际问题!试过setAction,还是没有骰子。