Zend_Auth Identity не сохраняется между контроллерами

Довольно новичок в Zend Framework 1.11 с Doctrine 2.

Я успешно создал логин и т. Д. С помощью Doctrine.

Моя текущая проблема заключается в том, что экземпляр Zend_Auth отлично работает, когда я остаюсь внутри контроллера, в котором находится вход.

Если я попытаюсь определить состояние Zend_Auth :: getInstance-> HasIdentity () в любом другом контроллере, он вернет пустое значение.

Если я затем вернусь к любой странице, находящейся в контроллере, содержащей логин / аутентификацию, hasIdentity будет работать нормально.

Я даже пробовал писать в хранилище, но это не приносит радости.

Мой код авторизации выглядит следующим образом: действие, вызываемое после нажатия кнопки входа (в пределах MembersareaController)

public function authAction()
{
    $this->_helper->viewRenderer->setNoRender(true);

    $loginForm = new Application_Model_Login();

    if($this->getRequest()->isPost()){
        $usr = "";
        $pwd = "";
        $KeepLoggedIn = false;
        $message = "";

        $usr = $this->_getParam('username'); 
        $pwd = $this->_getParam('password');
        $pwdMd5 = md5($pwd);

        if($usr !== "" && $pwd !== ""){

            $GDSAdaptor = new ZC_Auth_Adapter($usr, $pwdMd5);

            $result = \Zend_Auth::getInstance()->authenticate($GDSAdaptor);

            if(\Zend_Auth::getInstance()->hasIdentity()){
                $this->flashMessenger->addMessage(LOGIN_SUCCESS);
                $this->_redirect('/membersarea/index');
            }else{
                $this->flashMessenger->addMessage(LOGIN_INVALID);
            }
        }else{
            $this->flashMessenger->addMessage(LOGIN_MISSING_FORMVAL);
            $this->_redirect('/membersarea/login');
        }
    }

Попытка увидеть, как человек вошел в систему IndexController с помощью следующего кода, не дает результатов. hasIdentity возвращает пустое значение.

public function indexAction()
{

    if(Zend_Auth::getInstance()->hasIdentity())
    {
        $msg = "hasIdentity: YES";
    }else{
        $msg = "hasIdentity: NO";
    }

    $this->view->msg = $msg;
}

person John Cogan    schedule 30.09.2012    source источник
comment
Вы уверены, что файл cookie для вашего сеанса PHP настроен на правильный домен? Я думаю, вам следует проверить с помощью firebug   -  person RageZ    schedule 30.09.2012
comment
Привет. Спасибо за ответ. Я сравнил информацию о файлах cookie с помощью Firebug между ними, и информация о файлах cookie идентична.   -  person John Cogan    schedule 01.10.2012
comment
Я заметил, что для домена существуют два отдельных файла cookie с разными идентификаторами PHPSESSION и разными путями. У одного путь установлен на '/ membersarea', который является контроллером с включенным материалом аутентификации, а второй установлен на '/', который является домашней страницей.   -  person John Cogan    schedule 01.10.2012


Ответы (1)


Zend_Session :: RememberMe (); в бутстрапе решена эта проблема

person John Cogan    schedule 01.10.2012