我在 CakePHP 应用程序中有一个控制器,其中有很多操作。我正在使用ACL 组件来管理允许哪些用户在我的控制器中执行哪些操作。我的控制器中有一个 isAuthorized() 操作,用于检查是否允许某个登录用户执行请求的操作,如下所示:
function isAuthorized()
{
switch($this->action)
{
case 'myAction':
$user_id = $this->Auth->user('id'); // the id of the connected user
if($user_id)
{
return $this->Acl->check(
array('model' => 'MyModel', 'foreign_key' => $user_id),
'controllers/MyController/myAction'
);
}
break;
}
}
正如您在上面看到的,我所做的只是使用Acl 组件myAction
的方法检查是否允许连接的用户执行。check
这种方法的问题是每次myAction
调用时都会执行此检查。有没有办法告诉 Cake 只执行一次此检查(例如在第一次调用操作时)?通过每次检查是否允许用户执行会大大降低应用程序速度的控制器操作。
任何帮助或建议表示赞赏
谢谢