我的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函数答案 0 :(得分:0)
据我所知,您需要_forward()
(保留请求)或_redirect()
(新请求)返回登录,由于authenticate()
中_process()
失败或authAction()
中第60行和第100行之间的错误导致。
从我一直在阅读的内容看来,似乎记录了失败的登录并且数据库已更新,但随后......没有。没有重定向,没有转发,只有标头设置为500并生成消息。
希望这会有所帮助。我希望我没有完全错过它。