Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
[je me suis trompé de forum ..... Si un modérateur peut déplacer ce post]
Bonjour,
J'essaye de faire fonctionner l'authentification avec Zend_Auth comme indiqué sur ce tutoriel :
http://www.kitpages.fr/zf_zendAuth.php
Tout fonctionne à l'exception de la méthode hasIdentity() qui me retourne toujours false.
//// // VUE //// if ($auth->hasIdentity()) { $member = $auth->getIdentity(); echo "Bonjour ".$member."<br/>"; } else { $member = null; echo "Vous n'êtes pas identifié<br/>"; }
Du coup je ne parviens pas à m'authentifier. Je soupçonne un problème de configuration du serveur au niveau des Sessions.
Merci de votre.
Dernière modification par exotux (03-09-2007 19:01:41)
Hors ligne
c'est le code de login qu'il faudrait nous fournir car là on ne peut rien voir
A+JYT
Hors ligne
Bonsoir, voici le code de mon adaptateur
class projet_authAdapter implements Zend_Auth_Adapter_Interface { private $login = null; private $pass = null; public function __construct($login, $pass) { $this->login = $login; $this->pass = $pass; } public function authenticate() { $db = Zend_Registry::get('db'); $db->setFetchMode(Zend_Db::FETCH_OBJ); $result = $db->fetchRow("SELECT * FROM users WHERE login='{$this->login}' AND password='{$this->pass}'"); $translate = Zend_Registry::get('translate'); if ($result != false) { // Identification réussie $res = new Zend_Auth_Result(Zend_Auth_Result::SUCCESS, $this->login, array()); return $res; } else { // Echec de l'identification $res = new Zend_Auth_Result(Zend_Auth_Result::FAILURE, null, array($translate->_('notification_erreur_identification')) ); return $res; } } }
Enfin voici le code qui traite le formulaire :
// Identification $auth = Zend_Auth::getInstance(); if ( isset($_POST['username']) ) { $authAdapter = new projet_authAdapter($_POST['username'], $_POST['password']); $result = $authAdapter->authenticate($authAdapter); if ( ! $result->isValid() ) { header("Location: ". $_SERVER["SCRIPT_NAME"]); exit(); } else { header("Location: ".$_SERVER["SCRIPT_NAME"]); exit(); } } // Cette section retourne tjs false if ($auth->hasIdentity()) { echo "Bonjour ".$member."<br/>"; } else { $member = null; echo "Vous n'êtes pas identifié<br/>"; }
C'est du copier-coller adpaté du tuto cité dans mon premier post.
Merci d'avance.
Dernière modification par exotux (02-09-2007 22:11:32)
Hors ligne
Bonjour,
Je soupçonne que c'est ton test d'authentification qui est faux.
Tu peux ajouter des lignes de débug dans le code suivant pour voir où tu passes ?
if ($result != false) { // Identification réussie $res = new Zend_Auth_Result(Zend_Auth_Result::SUCCESS, $this->login, array()); return $res; } else { // Echec de l'identification $res = new Zend_Auth_Result(Zend_Auth_Result::FAILURE, null, array($translate->_('notification_erreur_identification')) ); return $res; }
Je soupçonne que tu passes tjrs dans le else...
A+, Philippe
PS : au fait je proteste, c'est pas un copier-coller, y'a une requête en base en plus
Hors ligne
je voterais aussi pour ce genre de chose
A+JYT
Hors ligne
Bonjour,
J'ai retesté l'identification. Je pase bien dans les deux cas de l'identification (
échec ou réussite) mais hasIdentity() retourne systématiquement false.
Voilà, je ne comprends pas.
Hors ligne
A priori, je ne vois pas d'erreur dans ce cas...
Juste une question con... tu acceptes les cookies ? Sinon je suis un peu sec...
A+, Philippe
Hors ligne
ton adaptateur est-il placé dans le register ?
car sans ça à l'appel suivan til à été détruit
Zend_Registry::set('dbAdapter', $db);
voilà ce que donne normalement le tuto
Hors ligne
J'ai utilisé Zend_Auth_Adapter_DbTable et le problème est réglé. J'ai eu beau tourner ça dans tout les sens je ne comprends toujours pas l'erreur.
Enfin ça fonctionne. Merci de votre aide.
Hors ligne
Un déboggueur avec du pas à pas te dit à coup sûr d'où vient l'erreur, et tu peux en déduire si ca provient de ZF, ou de toi. C'est déja pas mal
Hors ligne
Attention au debuggeur de ZEND
en effet imaginez que vous exécuté du code qui appelle la fonction foo() mais le fichier dans lequel la fonction est défini n'a pas été chargé
si vous exécuté se code avec le debuggeur pas à pas de ZEND et ZendStudio il suffit que le fichier contenant la définition soit ouvert dans zend studio pour que même sur le serveur (remote debug) pour qu'aucune erreur ne soit détecté. il en va de même avec toute sorte de définition
en clair de gros effets de bors avec le débuggeur
A+JYT
Hors ligne
Oui ya quelques fuites, fo faire attention ^^
Hors ligne
Pages: 1