Эксперты
Я только что обнаружил странное поведение Zend_Auth, при котором он не может сохранять сеанс на сервере. Это происходит внезапно со всеми моими существующими приложениями, которые используют Zend_Auth для аутентификации, поэтому я уверен, что это не проблема с кодами. По сути, всякий раз, когда пользователь успешно проходит аутентификацию (его пользовательский объект сохраняется в сеансе) и после перенаправления на целевую страницу, пользовательский объект всегда имеет значение NULL.
Я использую Zend_Auth :: getInstance () -> getIdentity (), чтобы извлечь объект пользователя из сеанса, и он всегда равен NULL. Это странное поведение происходит только на живом сервере, и все отлично работает на моей машине и промежуточном сервере. Я просто хочу убедиться, что это просто сервер, пытающийся быть смешным здесь, потому что я проверял коды и до сих пор не знаю. Это общий сервер, и у меня нет особого доступа.
Вот мой код:
// setup Zend_Auth adapter for a database table
Zend_Loader::loadClass('Zend_Auth_Adapter_DbTable');
$db = Zend_Registry::get('db');
$authAdapter = new Zend_Auth_Adapter_DbTable($db, 'Users', 'Email', 'Password', 'MD5(?) AND Active=1');
$authAdapter->setIdentity($email)
->setCredential($password);
// do the authentication
$auth = Zend_Auth::getInstance();
$result = $authAdapter->authenticate();
if ($result->isValid()) {
// success : store database row to auth's storage system
// (not the password though!)
$userData = array('UID','Email','Username','FirstName','LastName','Email','School');
$data = $authAdapter->getResultRowObject($userData, 'Password');
$auth->getStorage()->write($data);
$userData = get_object_vars($auth->getIdentity());
if (!empty($userData)) {
// redirect here
} else {
// show invalid
}
} else {
// show invalid
}