Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Salut à tous,
J'ai un soucis "nouveau" avec Zend_Auth. J'ai ce message d'erreur, alors que je ne crois pas avoir modifier mon code :
array 0 => string 'Supplied credential is invalid.' (length=31)
Voici le dump (une partie) de l'adapteur :
protected '_dbSelect' => null protected '_tableName' => string 'users' (length=5) protected '_identityColumn' => string 'username' (length=8) protected '_credentialColumn' => string 'password' (length=8) protected '_identity' => string 'admin' (length=5) protected '_credential' => string 'password' (length=8) protected '_credentialTreatment' => string 'SHA1(CONCAT(?,salt))' (length=20) protected '_authenticateResultInfo' => null protected '_resultRow' => null protected '_ambiguityIdentity' => boolean false
Le login et pass sont correct, je l'ai ai modifié depuis le code de rob Allen :
INSERT INTO users (username, password, salt, role, date_created) VALUES ('admin', SHA1('passwordce8d96d579d389e783f95b3772785783ea1a9854'), 'ce8d96d579d389e783f95b3772785783ea1a9854', 'administrator', NOW());
Je vois pas trop ou est le problème, et dur de trouver des réponses sur le net.
Portions de code :
public function getAuthAdapter($values) { if (null === $this->_authAdapter) { $dbAdapter = Zend_Db_Table::getDefaultAdapter(); $authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter); $tableRecord = Zend_Registry::get('config')->tables; if (isset($tableRecord)) { $authAdapter->setTableName($tableRecord->users) ->setIdentityColumn('username') ->setCredentialColumn('password') ->setCredentialTreatment('SHA1(CONCAT(?,salt))'); $this->setAuthAdapter($authAdapter); $this->_authAdapter->setIdentity($values['username']); $this->_authAdapter->setCredential($values['password']); } } return $this->_authAdapter; } ... public function authenticate($credentials) { $adapter = $this->getAuthAdapter($credentials); var_dump($adapter); $auth = $this->getAuth(); $result = $auth->authenticate($adapter); if ($result->isValid()) { $user = $adapter->getResultRowObject(); $auth->getStorage()->write($user); return true; } else { $this->errorMessage = $result->getMessages(); } return false; } ... $authentification = new Custom_Auth_Authentication(); if ($authentification->getIdentity()) { $this->_redirect("/accueil-administration.html"); } else { $form = new Frontoffice_Form_Login(); $login = $this->getRequest()->getParam('login'); $password = $this->getRequest()->getParam('password'); if ($this->_request->isPost()) { $formData = $this->getRequest()->getPost(); if ($form->isValid($formData)) { $authentification = new Custom_Auth_Authentication(); if ($authentification->authenticate($formData)) { $this->_redirect("/accueil-administration.html"); } else { throw new Exception(__CLASS__ . ' / ' . __FILE__ . ' / ' . __METHOD__ . ' / ' . __LINE__); } } else { $form->populate($formData); } } $this->view->form = $form; }
Une idée?
Merci
F.
Hors ligne
Bonjour,
Même problème...
Quelqu'un a une idée?
Dans mon contrôleur du formulaire d'inscription:
for ($i = 0; $i < 50; $i++) {$dynamicSalt .= chr(rand(33, 126));} $passwordsalted = $form->getValue("password").$dynamicSalt; $riders->set_password(md5($passwordsalted)); $riders->set_salt($dynamicSalt);
et dans mon contrôleur de mon formulaire de login:
public function loginAction() { $db = $this->_getParam('db'); $form = new Application_Form_Login(); $this->view->formLogin = $form; //$loginForm = new Application_Form_Login($_POST); if ($this->_request->isPost()) { $formData = $this->_request->getPost(); if ($form->isValid($formData)) { $adapter = new Zend_Auth_Adapter_DbTable( $db, 'riders', 'email', 'password', 'MD5(CONCAT(?, salt))' //'MD5((?))' ); $adapter->setIdentity($form->getValue('email')); $adapter->setCredential($form->getValue('password')); $auth = Zend_Auth::getInstance(); $result = $auth->authenticate($adapter); if ($result->isValid()) { $user = $adapter->getResultRowObject(null, 'password'); $auth->getStorage()->write($user); $this->_helper->FlashMessenger('Successful Login'); $this->_helper->redirector('index', 'index'); return; } else{ switch ($result->getCode()) { case Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND: printf("Identifiant inconnu"); break; case Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID: printf("Mot de passe incorrect"); $messages = $result->getMessages(); foreach ($messages as $i => $message) { printf($message); } break; case Zend_Auth_Result::SUCCESS: /** do stuff for successful authentication **/ break; default: /** do stuff for other failure **/ break; }}}}}
Dernière modification par bandit_rouge (19-08-2011 16:20:22)
Hors ligne
je suis un noob...
Ca fait des jours que je m'arrache les cheveux...
lors de la creation de mon "grain de sel" je génére un chaine de 50 caractères alors que mon type dans Mysql est un varchar(45).
je vous le disais je suis un noob!
Est ce qu'il en a comme moi qui passe des jours sur une erreur à la con?
moi c'est tout le temps ;-)
Hors ligne
Pages: 1