ZendFremeworkのZend_Authを試す。
PEAR::Authと違い、認証のみの機能となる。
アクセス制御は別のZend_Aclを使う。
なんとなく整理して書くとこんな感じ。
$_connect = $db->_dbConnect(); //DBにコネクト $authAdapter = new Zend_Auth_Adapter_DbTable($_connect , 'user' , 'username' , 'password'); // リクエストパラメータをセット $authAdapter->setIdentity( $this->getRequest()->getPost('username') ); $authAdapter->setCredential( $this->getRequest()->getPost('password') ); // 認証を実行 $result = $authAdapter->authenticate(); if (!$result->isValid()) { // 認証失敗の場合はログイン画面へ $this->_redirect('/login'); }else{ // 認証情報をセッションに保存 $data = $authAdapter->getResultRowObject( null , 'password' ) ); //password以外を保存 $auth = Zend_Auth::getInstance(); $auth->getStorage()->write($data); }
認証後のユーザー取得は
$auth = Zend_Auth::getInstance(); $user = $auth->getIdentity();
となる。
慣れない方法なのでわかりにくいなぁ・・。
2010/01 一部修正