一連のアクションがある 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
このチェックを 1 回だけ実行するよう Cake に指示する方法はありますか (たとえば、アクションの最初の呼び出し時)? ユーザーがアプリケーションの速度を大幅に低下させるコントローラーアクションの実行を許可されているかどうかを毎回確認します。
どんな助けや提案も大歓迎です
ありがとうございました