Zend会话因登录失败而被擦除


Zend session getting wiped with failed login

我的Zend_Auth函数有问题。

我有一个网络应用程序,当Zend_Auth会话中的密钥超时时,它会提示用户使用登录框。当用户使用正确的凭据登录时,会话中的密钥将重置回true。但是,当用户输入错误的凭据时,会话中的所有密钥都会被擦除,并且会话不再有效?

我想知道Zend_Auth::getInstance()功能是否正在擦除它以启动新的?

有什么想法吗?

protected function _process($values)
{
  // grab data from config
  $iniTime = Zend_Registry::get('config')->inactive->session;
  $expireTime = $iniTime->timeout;
  $realIP = new Application_Model_RealIP();
  // Get our authentication adapter and check credentials
  $adapter = $this->_getAuthAdapter();
  $adapter->setIdentity($values['email']);
  //$pwEncode->encode_password($values['password'])
  $adapter->setCredential($values['password']);
  $auth = Zend_Auth::getInstance();
  $result = $auth->authenticate($adapter);
    if ($result->isValid()) {
        $user = $adapter->getResultRowObject();
        $user->session_IP = $realIP->getRealIpAddr();
        $auth->getStorage()->write($user);
        //check whether the client is authenticated
        $session = new Zend_Session_Namespace('new_session');
        // Set "dummy" key with expiration
        $session->key = true;
        $session->setExpirationSeconds( $expireTime, 'key' );
        return true;
     }
   return false;
}

指向调用_process方法链接的auth函数的链接

根据我所能告诉的,您需要_forward()保留请求)或_redirect()new请求

从我读到的内容来看,似乎登录失败并更新了数据库,但随后。。。没有什么没有重定向,没有转发,只有一个设置为500的标头和一条生成的消息。

希望这能有所帮助。我希望我没有完全错过。