2009-09-24 11 views
5

J'ai essayé d'utiliser:Zend_Auth vérifier si l'utilisateur est connecté

// do login if request is posted 
if (isset($_POST) && !empty($_POST)) { 
    // do authencation 
    ... 
} else { 
    // request not posted 
    // see if already logged in 
    if (Zend_Auth::getInstance()->hasIdentity()) { 
     echo "already logged in as: " . Zend_Auth::getInstance()->getIdentity(); 
    } 
} 

Zend_Auth::getInstance()->hasIdentity() semblent être toujours faux ... même après une connexion

+0

vérifier les cookies, session? –

+3

Comment faites-vous votre authentification? comment vous assurez-vous qu'il est persisté? Si vous avez bien fait l'authentification, hasIdentity retournera vrai! – markus

+0

J'ai utilisé Zend_Auth pour l'authentification, http://framework.zend.com/manual/fr/zend.auth.html#zend.auth.introduction.persistence.default, en fonction de $ result-> getIdentity() === $ auth-> getIdentity() – iceangel89

Répondre

11

Appellez-vous jamais Zend_Auth::getInstance()->getStorage()->write($identity)?

Si vous authentifiez via Zend_Auth::getInstance()->authenticate($adapter), il écrit dans le stockage pour vous, mais si vous appelez l'authentification directement sur l'adaptateur, vous êtes responsable de l'écriture de l'identité sur le stockage.

1

êtes-vous sûr que votre identité persistée? (c'est-à-dire stocké dans la session ou quelque chose de similaire) sinon vous devrez vous ré-authentifier à chaque demande

1

i eu le même problème, dans mon cas, la valeur de session.save_path sur n'a pas été mis sur mon serveur (phpinfo()) donc j'ajouté en configs/application.ini cette valeur:

resources.session.save_path = APPLICATION_PATH "/../data/sessions" 

et sur mon serveur i créer le dir /data/sessionssessions a 777 autorisations