Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 04-01-2010 12:02:38

Flizer
Membre
Date d'inscription: 17-12-2009
Messages: 34

Zend_Auth mise en session

Bonjour,

Quelqu'un pouraait-il me dire ce que ces 2 lignes font ?

Code:

$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

 

#2 04-01-2010 12:24:44

Grummfy
Membre
Lieu: Belgique
Date d'inscription: 01-08-2007
Messages: 232
Site web

Re: Zend_Auth mise en session

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


Engagez-moi! : Cherche job en Belgique autour de Namur (1 heure de route autour)
blog - ZF Planet

Hors ligne

 

#3 04-01-2010 12:34:12

Guillhomme
Membre
Date d'inscription: 09-10-2008
Messages: 102

Re: Zend_Auth mise en session

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

 

#4 04-01-2010 12:44:43

Flizer
Membre
Date d'inscription: 17-12-2009
Messages: 34

Re: Zend_Auth mise en session

ok merci à vous deux.
Voici le code de ma fonction censée stocker mon authentification :

Code:

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

 

#5 04-01-2010 12:50:39

Guillhomme
Membre
Date d'inscription: 09-10-2008
Messages: 102

Re: Zend_Auth mise en session

Je n'ai pas le code devant les yeux, mais il semble que je faisais comme cela :

Code:

$ident = Zend_Auth::getInstance()->getIdentity();

Ensuite, pour accéder par exemple à ton login :

Code:

$login = $ident->login;

Hors ligne

 

#6 04-01-2010 13:03:54

Flizer
Membre
Date d'inscription: 17-12-2009
Messages: 34

Re: Zend_Auth mise en session

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

 

#7 04-01-2010 14:28:02

Flizer
Membre
Date d'inscription: 17-12-2009
Messages: 34

Re: Zend_Auth mise en session

C'est fort ça, lorsque je fais un hasIdentity() j'obtiens '1', lorsque je fais un getIdentity() j'obtiens 'false'. Comment est-ce possible ?

Code:

        $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 ?

Code:

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

 

#8 04-01-2010 16:42:10

Flizer
Membre
Date d'inscription: 17-12-2009
Messages: 34

Re: Zend_Auth mise en session

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

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages