Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
J'essaye d'utiliser le MD5 pour le cryptage du password dans un formulaire de connection, mais le résultat du connection est toujours "Mot de passe incorrecte'.
Ci-dessous le code:
<?php class IndexController extends Zend_Controller_Action { public function init() { /* Initialize action controller here */ } public function indexAction() { if (Zend_Auth::getInstance()->hasIdentity()){ $this->_redirect('acceuil/index'); } $request = $this->getRequest(); $form = new Form_Login(); $this->view->form = $form; if ($request->isPost()){ if ($form->isValid($this->_request->getPost())){ $username = $form->getValue('login'); $password = $form->getValue('password'); $authAdapter = $this->getAuthAdapter(); $authAdapter->setIdentity($username) ->setCredential($password); $auth = Zend_Auth::getInstance(); $result = $auth->authenticate($authAdapter); if ($result->isValid()){ $authStorage = $auth->getStorage(); $authStorage->write($authAdapter->getResultRowObject(null, 'Password')); $this->_redirect('acceuil/index'); }else{ $this->view->messageErreur = 'Nom utilisateur ou mot de passe erroné'; } }else{ $this->view->messageErreur = 'Champs de saisie obligatoires'; } } } public function logoutAction() { // action body Zend_Auth::getInstance()->clearIdentity(); $this->_redirect('index/index'); } private function getAuthAdapter() { $authAdapter = new Zend_Auth_Adapter_DbTable(Zend_Db_Table::getDefaultAdapter()); $authAdapter->setTableName('users') ->setIdentityColumn('Username') ->setCredentialColumn('Password') ->setCredentialTreatment('MD5(?)'); return $authAdapter; } }
Merci d'avance pour le help.
Dernière modification par mouradsi (22-11-2010 00:11:18)
Hors ligne
Bonjour !
$password = $form->getValue('password');
...
$authAdapter->setIdentity($username)
->setCredential($password);
Si je prends ces lignes, je vois que tu essayes de logguer l'utilisateur avec les infos qu'il a donné... Donc le mot de passe en clair, hors tu dis l'avoir en md5 dans ta base.
Il faut donc que le mot de passe que l'utilisateur te donne soit mis en md5 avant d'être vérifié.
$authAdapter->setIdentity($username) ->setCredential(md5($password));
Et voilà ça devrait marcher !
Hors ligne
Problème résolu.
Merci pour l'aide.
Hors ligne
Pages: 1