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

时间:2012-09-13 10:07:59

标签: php zend-framework zend-auth

我的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方法link

的auth函数

1 个答案:

答案 0 :(得分:0)

据我所知,您需要_forward()保留请求)或_redirect()新请求)返回登录,由于authenticate()_process()失败或authAction()中第60行和第100行之间的错误导致。

从我一直在阅读的内容看来,似乎记录了失败的登录并且数据库已更新,但随后......没有。没有重定向,没有转发,只有标头设置为500并生成消息。

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