2008年5月6日 - 14:48
特定actionのみでトークンを再発行する
以前requireAuthの拘束が強すぎるというのを書いたんですが、実際にrequireAuth指定していないアクションではトークンの再生成などを行わないよう、Securityコンポーネントをいじってみました。具体的には次のような拡張コンポーネントを作成します。
PHP:
-
require_once(COMPONENTS.'security.php');
-
-
class MySecurityComponent extends SecurityComponent
-
{
-
function startup(&$controller)
-
{
-
$controller->params['requested'] = 1;
-
}
-
-
parent::startup($controller);
-
}
-
}
あとはコントローラの$componentsに作成したの(ここではMySecurity)を追加すればOK。ただし、拡張版を使う際は大元のSecurityコンポーネントは$componentsから撤去する必要があります。単なるincludeとは違ってオブジェクト生成が行われるのでstartupメソッドが自動で実行されてしまい、意味がなくなってしまいます。
$controller->params['requested']というのは本来Object::requestActionを通ったかどうかの判定に使っているようですが、実際にこれを元に場合分けしてるのは1.1ではSecurityComponent::startupだけみたい。