Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Quelqu'un pouraait-il me dire ce que ces 2 lignes font ?
$auth = Zend_Auth::getInstance(); $storage = $auth->getStorage();
Ma question porte plus précisément sur la deuxième ligne, car cette fonction getStorage() m'intrigue. Utilise-t-elle la session en cours ? Elle en crée une nouvelle ? ce n'est pas une session ?
J'ai du mal à cerner ce qu'elle fait exactement, et la doc ZF ne m'aide absolument pas.
Hors ligne
Il me semble me rappeler que la doc le précise (ou alors c'est l'api) si pas de storage particulier défini oui cela apsse apr els session
Hors ligne
La deuxième ligne te permet de récupérer l'objet qui va te permettre de garder en mémoire le résultat de ton Auth.
Tel quel, l'objet ne fait que tester, il ne stock rien
Hors ligne
ok merci à vous deux.
Voici le code de ma fonction censée stocker mon authentification :
public function stockageAction(){ $auth = Zend_Auth::getInstance(); $dba = Zend_Db_Table::getDefaultAdapter(); $authAdapter = new Zend_Auth_Adapter_DbTable($dba); $storage = $auth->getStorage(); $storage->write($authAdapter->getResultRowObject(array('login','nom','prenom'))); $storage->write($authAdapter->getResultRowObject(null, 'password')); }
login, nom, prenom et password sont les noms des champs de ma table.
C'est un code que j'ai récupéré (je ne sais plus où).
Mon problème est que je ne sais pas récupérer les infos stockées : login, nom et prenom pour les afficher une fois logué. J'imagine qu'il y a une fonction read() qui fait le pendant à write(), mais impossible de trouver son utilisation.
Hors ligne
Je n'ai pas le code devant les yeux, mais il semble que je faisais comme cela :
$ident = Zend_Auth::getInstance()->getIdentity();
Ensuite, pour accéder par exemple à ton login :
$login = $ident->login;
Hors ligne
Il me semblait bien que c'était comme cela, mais cela ne fonctionne pas chez moi. Je dois avoir une erreur ailleurs, je vais creuser.
Merci à toi
Hors ligne
C'est fort ça, lorsque je fais un hasIdentity() j'obtiens '1', lorsque je fais un getIdentity() j'obtiens 'false'. Comment est-ce possible ?
$result = $user->identificationUti($login,$password); if ($result->isValid()) { $this->stockageAction(); $auth = Zend_Auth::getInstance(); $ident = $auth->getIdentity(); //echo var_dump($auth->hasIdentity()); $this->view->identite = $ident->login; return true; }else{ return false; }
On entre bien dans le if().
Une session est créée dans mon bootstrap, ce n'est pas elle qui me pose problème ?
protected function _initSession() { $session = new Zend_Session_Namespace('masession', true); Zend_Registry::set('session', $session); Zend_Session::start($this->getOptions()); if (!isset($session->initialized)) { Zend_Session::regenerateId(); Zend_Session::registerValidator(new Zend_Session_Validator_HttpUserAgent()); $session->initialized = true; $session->time = time(); $session->role = 'guest'; } }
Dernière modification par Flizer (04-01-2010 14:38:21)
Hors ligne
Bon j'ai trouvé, mais ça m'a rendu dingue cette histoire !
Il ne faut pas créer un nouvel authAdapter dans le stockageAction, mais utiliser celui créé dans la fonction où il est définit. Pour cela il suffit de le passer en paramètre.
grrrr
Hors ligne