Duardaum 0 Denunciar post Postado Agosto 11, 2010 Olá pessoal, acho que vocês já estão enjoados da minha cara de tanto perguntar para vocês rsrsr :P Desta vêz da dando o seguinte erro: * Quando eu efetuo o login do usuario e redireciono para o módulo de funcionários, ele meio que perde os dados do Zend_Auth::getInstance()->getIdentity(), alguem sabe por que isso acontece ou disconfia?? Desde já grato!! :) Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Agosto 11, 2010 Como você está fazendo a autenticação e a gravação dos dados no Auth? E para recuperar? Poste os códigos. Para você dizer isto, imagino que você deva estar com problemas para verificar se o usuário está logado ou não, certo? Então, poste também este trecho do código. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Duardaum 0 Denunciar post Postado Agosto 11, 2010 É que eu faço o login em um módulo para poder redirecionar para outro. Quando ele faz o login e redireciona para o módulo vai de boa. O problema é que, eu faço uma busca em tempo real usando um input via ajax, e eu preciso de um código que fica no Zend_Auth::getStorage()->ready() ou Zend_Auth::getInstance()->getIdentity() como preferirem. para fazer essa busca. Quando ele vai fazer essa busca os dados do Zend_Auth::xxx somem.. Abaixo os códigos utilizados para a validação. Login_IndexController.php if($this->getRequest()->isPost()){ $DADOS = $this->getRequest()->getPost(); if($objFormLogin->isValid($DADOS)){ //Tentativa de Autenticação $objFuncionario = new Funcionario(); $USERDADOS = $objFuncionario->Autenticar($_POST['txtLogin'], $_POST['txtSenha']); if(is_array($USERDADOS)){ Zend_Auth::getInstance()->getStorage()->write($USERDADOS); $this->_redirect('/funcionarios'); }else{ $this->view->erromsg = $USERDADOS; } }else{ $objFormLogin->populate($DADOS); } } Utilizo um plugin para poder verificar se o usuário está logado e é para o módulo que ele está querendo: class Lord_Plugin_Auth extends Zend_Controller_Plugin_Abstract { public function routeShutdown(Zend_Controller_Request_Abstract $objRequest) { $objRequisicao = (object) array( 'modulo' => $objRequest->getModuleName(), 'controller' => $objRequest->getControllerName(), 'action' => $objRequest->getActionName() ); $objAuth = Zend_Auth::getInstance(); switch(trim($objRequisicao->modulo)){ case 'funcionarios':{ if($objAuth->hasIdentity()){ $USER_DADOS = $objAuth->getIdentity(); if(!isset($USER_DADOS[0]['codfuncionario'])){ //Desloga o usuário $objAuth->clearIdentity(); //Manda para a pagina de login $this->getResponse()->setRedirect('/login/index/funcionario'); } }else{ //Mandando o usuário para página de login de funcionarios $this->getResponse()->setRedirect('/login/index/funcionario'); } break; } case 'login':{ break; } default :{ if($objAuth->hasIdentity()): //Desloga o usuário $objAuth->clearIdentity(); endif; $objRequest->setModuleName('padrao'); break; } } } } Na function init(){} eu verifico se a requisição é ajax ou não para poder desabilitar o layout e trazer apenas os dados e aproveito pegar o código. OBS.: Esse código que é o do usuário tem que ficar no Storage() pois tem que espirar. public function init(){ if($this->getRequest()->isXmlHttpRequest()){ $this->_helper->layout->disableLayout(); } if(Zend_Auth::getInstance()->hasIdentity()){ $objUser = Zend_Auth::getInstance()->getStorage()->read(); print_r($objUser); exit; }else{ echo 'sua sessão expirou..'; exit; } } Função de autenticação do Funcionario: public function Autenticar($login, $senha){ $objDb = Zend_Registry::getInstance()->get('database'); $select = $objDb->select() ->from(array('vi_login_funcionario'), array('codfuncionario', 'nome', 'sexo', 'departamento', 'bloqueado') ) ->where("login = '".strtoupper(addslashes($login))."' AND CRYPT('".addslashes($senha)."', senha) = senha") ->limit('1') ->query(); $DADOS = $select->fetchAll(); if(empty($DADOS)){ $str = "Login ou Senha incorretos."; unset($DADOS); return $str; }else if($DADOS[0]['bloqueado'] == 'S'){ $str = "Você foi bloqueado. Contate o administrador do sistema para efetuar o desbloqueio."; unset($DADOS); return $str; }else{ return $DADOS; } } E não adianta, os dados somem sem eu ter ao menos que limpar.. alguma solução.. Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Agosto 11, 2010 Uhn... Dá uma lida neste artigo, que ele explica como fazer a autenticação, usando mais do Zend Auth do que você está usando. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Duardaum 0 Denunciar post Postado Agosto 12, 2010 Vlw ai mano pela indicação do artigo mais, é que eu tenho que fazer a autenticação em uma VIEW no banco de dados.. Compartilhar este post Link para o post Compartilhar em outros sites
Duardaum 0 Denunciar post Postado Agosto 16, 2010 Resolvido. Criei um modelo extendido da Zend_db_table_Abstract de uma view e validei dando um SELECT tradicional mesmo.. Vlw a todos. Compartilhar este post Link para o post Compartilhar em outros sites