私のentry
コントローラーでは、次のように設定しました。
これは機能します:
$authadapter = new Test_Auth_Adapter_DbTable($db);
$auth = Zend_Auth::getInstance();
$result = $auth->authenticate($authadapter);
$data = $authadapter->getResultRowObject(null, 'password');
$auth->getStorage()->write($data);
$this->_redirector->gotoUrl('/main');
これはしません:
$authadapter = new Test_Auth_Adapter_DbTable($db);
$auth = Zend_Auth::getInstance();
$auth->setStorage(new Zend_Auth_Storage_Session('Test_User')); //the only difference
$result = $auth->authenticate($authadapter);
$data = $authadapter->getResultRowObject(null, 'password');
$auth->getStorage()->write($data);
$this->_redirector->gotoUrl('/main');
デバッガーを使用すると、すべての正しいデータで $_SESSION 変数に設定されていることがわかりますが、データが設定され、目的の宛先にリダイレクトされた後、$_SESSION 変数が設定されていないため、アクセスできません!
にリダイレクトされるページは、次の方法で認証をチェックします。
$this->auth = Zend_Auth::getInstance();
if (!$this->auth->hasIdentity()) {
$this->_redirector->gotoUrl('/entry');
}
なぜこれが機能しないのですか?