Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia pessoal, começei a estudar Zend essa semana e estou com umas dificuldades, creio que todos que iniciaram com os estudos passaram por isso também.
Seguinte estou tentando implementar um sistema de login da minha aplicação antiga (migrando pro Zend), só que aparece o seguinte erro:
Exception information:
Message: A credential value was not provided prior to authentication with Zend_Auth_Adapter_DbTable.
Stack trace:
#0 C:\wamp\www\gg\library\Zend\Auth\Adapter\DbTable.php(367): Zend_Auth_Adapter_DbTable->_authenticateSetup()
#1 C:\wamp\www\gg\library\Zend\Auth.php(117): Zend_Auth_Adapter_DbTable->authenticate()
#2 C:\wamp\www\gg\application\controllers\UsuarioController.php(46): Zend_Auth->authenticate(Object(Zend_Auth_Adapter_DbTable))
#3 C:\wamp\www\gg\library\Zend\Controller\Action.php(513): UsuarioController->logarAction()
#4 C:\wamp\www\gg\library\Zend\Controller\Dispatcher\Standard.php(295): Zend_Controller_Action->dispatch('logarAction')
#5 C:\wamp\www\gg\library\Zend\Controller\Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#6 C:\wamp\www\gg\library\Zend\Application\Bootstrap\Bootstrap.php(97): Zend_Controller_Front->dispatch()
#7 C:\wamp\www\gg\library\Zend\Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
#8 C:\wamp\www\gg\public\index.php(26): Zend_Application->run()
#9 {main}
Request Parameters:
array (
'controller' => 'usuario',
'action' => 'logar',
'module' => 'default',
'usuario' => 'developer',
'senha' => 'admin',
)
meu codigo abaixo:
public function logarAction(){
// Verifica se foi submetido via POST
if( !$this->_request->isPost() )
return false;
// Obtém os dados passados via POST
$data = $this->_request->getPost();
// Cria uma instancia de Zend_Auth
$objAuth = Zend_Auth::getInstance();
/**
* Instancia o Auth Db Table Adapter
*
* Quando se instancia este objeto, precisamos informar as configurações
* do BD, nome da tabela onde os dados de login estão, o campo do nome
* do usuário, e o campo da senha na tabela.
*/
$authAdapter = new Zend_Auth_Adapter_DbTable(
Zend_Registry::get( 'db' ),
'usuario',
'user',
'senha',
'md5(?)'
);
// Configura as credencias usuario e senha informadas pelo usuário
$authAdapter->setIdentity( $data['usuario'] )->setCredential( $data['login']);
// Tenta autenticar o usuário
$result = $objAuth->authenticate($authAdapter);
/**
* Se o usuário for autenticado redireciona para a index e grava seu email,
* caso contrário exibe uma mensagem de alerta na página
*/
if ( $result->isValid() ) :
/**
* Pega os dados do usuário, omitindo a senha
* http://framework.zend.com/manual/en/zend.auth.adapter.dbtable.html
*/
$authData = $authAdapter->getResultRowObject( null, 'senha' );
// Armazena os dados do usuário
$objAuth->getStorage()->write( $authData );
echo 'Login efetuado com sucesso!';
else :
echo 'Os dados informados (e-mail e/ou senha) não são válidos.';
endif;
}
alguém pode me ajudar?
Realmente Carlos Eduardo, falta de atenção total... normal, pra quem ta iniciando uma parada nova, fica meio perdido e erra por bobeiras... vlw e obrigado, agora vou parti para o ACL, obrigadão amigo!!!
Vamos analisar a mensagem de erro:
Isto significa que uma credencial não foi passada para o Zend_Auth. Então, vamos analisar outra questão:
Request Parameters:
array (
'controller' => 'usuario',
'action' => 'logar',
'module' => 'default',
'usuario' => 'developer',
'senha' => 'admin',
)
// Obtém os dados passados via POST
$data = $this->_request->getPost();
// Atenção aos nomes...
Fazendo esta modificação, acredito que passará a funcionar.
Carlos Eduardo