Zendで認証
認証処理などのように、各リクエスト共通の処理などを書いておくのに、良い方法はないかなぁと調べてみると、Zend_Controller_Action::preDispatchというのがありました。
abstract class AbstractController extends Zend_Controller_Action
{
public function preDispatch()
{
parent::preDispatch();
$this->_auth();
}
private function _auth()
{
・・・・
}
}
と、後はこのクラスをControllerのスーパークラスとして使えばOK。
また、ログインロジックもZend_Auth_Adapter_DbTableを使うとなかなか素敵にできました。
private function _login(){
$request = $this->getRequest();
$account = $request->getPost('account');
$password = $request->getPost('password');
$adapter = new Zend_Auth_Adapter_DbTable(Zend_Db_Table_Abstract::getDefaultAdapter(), 'ユーザーテーブル', 'アカウントフィールド名', 'パスワードフィールド名','password(?)');
$adapter->setIdentity($account);
$adapter->setCredential($password);
$result = $adapter->authenticate();
echo 'identity = ' . ($result->isValid()?'valid':'invalid');
}
ただ、Zend_ACLと組み合わせるときはどうするのがBetterなんでしょう?
$result->getIdentity()
のIDからユーザー情報を再読み込みというのが定石でしょうか?
さらに勉強。
Posted in PHP |
