Edultra 13 Denunciar post Postado Fevereiro 3, 2012 Boa tarde, Tenho o seguinte problema, utilizo o zend auth para autenticar em um servidor ldap, o grande problema é o seguinte, após ele logar ele redireciona para uma controller principal, onde eu testo se esta autenticado, ok funciona corretamente, o problema é que nesta controller eu tenho um menu que redireciona para outras controllers do sistema, que utilizam o mesmo script para testar se esta autenticado, porém nestas da o seguinte erro: Fatal error: Uncaught exception 'Zend_Controller_Response_Exception' with message 'Cannot send headers; headers already sent in /var/www/NVS/application/controllers/RhController.php, line 93' se utilizo o codigo de logoff na principal funciona, se comento o codigo de teste nesta ele funciona. Segue abaixo o código que utilizo para fazer o login: public function loginAction() { $auth = Zend_Auth::getInstance(); //Carrega as configurações $config = new Zend_Config_Ini('../application/configs/application.ini', 'production'); $options = $config->ldap->toArray(); $login = $this->_getParam('TxtUsuario'); $senha = $this->_getParam('TxtSenha'); //Instancia o Adaptador com a conexão LDAP $adapter = new Zend_Auth_Adapter_Ldap($options, $login, $senha); //Autentica $result = $auth->authenticate($adapter); //Verifica se a autenticação foi válida if ($result->isValid()) { $result->getIdentity() === $auth->getIdentity(); $result->getIdentity() == $username; $this->_redirect('principal'); } else { //Para imprimir as mensagens de erro se necessário foreach ($result->getMessages() as $message) { echo "$message"; } $this->_redirect('login/erro/usuario/' . $login); } } Segue o código que utilizo para verificar se a sessão é valida na controller (dentro de init): public function init() { /* Initialize action controller here */ $this->view->baseUrl = $this->_request->getBaseUrl(); $armazenamento = new Class_Bd(); $auth = Zend_Auth::getInstance(); if ($auth->hasIdentity()) { $usuario = $auth->getIdentity(); $this->view->usuario = $usuario; $menu = new Class_Menu($usuario, 1, $armazenamento); $this->view->menu = $menu->MontaMenus(); } else { $this->_redirect('login/erro/usuario/' . $login); } } Como chamo em outras controllers uma instancia do zend auth? esta faltando algo na action de login? Compartilhar este post Link para o post Compartilhar em outros sites
Edultra 13 Denunciar post Postado Fevereiro 4, 2012 Consegui resolver o problema não estava iniciando e armazenando a sessão, adicionei o seguinte código dentro da classe Bootstrap: protected function _initSession() { $options = $this->getOptions(); $sessionOptions = array( 'save_path' => $options['resources']['session']['save_path'] ); Zend_Session::setOptions($sessionOptions); Zend_Session::start(); } Compartilhar este post Link para o post Compartilhar em outros sites