2009-09-04 16 views
3

J'ai encore une autre chose bizarre qui se passe avec Zend.Zend_Auth ne parvient pas à écrire dans le stockage

Fondamentalement, je le code suivant après la création d'un domaine utilisateur:

$this->auth = Zend_Auth::getInstance(); 
$this->view->user = $this->user = $this->auth->getIdentity(); 
$this->user->idSite = $idSite; 
$this->user->urlSite = $urlSite; 
$this->auth->getStorage()->write($this->user); 

Qu'est-ce rageusement me agace est que le Auth-> getIdentity() quelques instants après que:

[idSite] => 0 
[urlSite] => 

Alors à partir de là, ça devient pire: Si je REFRESH ou si l'un des autres paramètres du formulaire échoue et m'envoie au MÊME FORMULAIRE, mais sans TOUCHER LE SCRIPT CI-DESSUS, le auth-getIdentity() renvoie correctement:

[idSite] => 2431 
[urlSite] => exampledomain 

Ce qui signifie que le code est correct et fonctionne, MAIS si le formulaire est rempli correctement et que tout se cumule bien, je redirige vers l'étape suivante: $ this -> _ redirect ('nextstep'), ni idSite ou urlSite reste vide pour toujours.

Pourquoi est-ce? Pourquoi?

Répondre

3

J'ai eu le même problème et je pense qu'il est préférable de passer par la voie d'utiliser la fonctionnalité d'espace de noms de session:

$oSession = new Zend_Session_Namespace('myStorage'); 
$oSession->foo = "bar"; 
$oSession->baz = 123; 

Et vous pouvez récupérer les données par:

$oSession = new Zend_Session_Namespace('myStorage'); 
$this->view->foo = $oSession->foo; 

Il y a d'autres indices ici: Zend_Auth dont le message principal est que le stockage des données Zend_Auth est en réalité juste un espace de noms.

L'accès par défaut à ce serait similaire à:

$oSession = new Zend_Session_Namespace('Zend_Auth');

+0

Très intéressant - merci. – John

+1

C'est un an plus tard et je construis un projet différent. Les mêmes problèmes m'ont conduit sur le même chemin et j'ai retrouvé votre poste. C'est la solution. Il résout tout, travaille toujours et il est propre et pur dans sa mise en œuvre, surtout lorsqu'il est abstrait. – John

1

J'ai également eu des problèmes avec Zend_Auth ne pas écrire dans le stockage. Cependant, après avoir vu la réponse de Ian Lewis et votre réponse, je me suis rendu compte qu'il écrivait probablement bien, mais ne lisait pas. J'avais précédemment changé le paramètre 'nom' de ma session en mon propre espace de nom. Une fois que j'ai enlevé ceci et ai commencé à employer le défaut par défaut mon Zend_Auth a fonctionné bien.