1

我的Zend_Auth功能有问题。

Zend_Auth我有一个 Web 应用程序,当会话中的密钥超时时,它会使用登录框提示用户。当用户使用正确的凭据登录时,会话中的密钥将重置回 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 函数链接

4

1 回答 1

0

据我所知,您需要_forward()保留请求)或_redirect()新请求)返回登录,无论是由于登录失败或第 60 行和第 100 行之间的某个authenticate()位置。_process()authAction()

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

希望这可以帮助。我希望我没有完全错过它。

于 2012-09-13T11:22:09.640 回答