Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour a tous.
Je vient de me rendre compte que mon action logout ne fonctionne pas. Est-ce quelqu'un arrive à supprimer les sessions de zend 2 et les données stocké dans zend\Auth?
Voici mon action de déconnexion :
[lang=php] function logoutAction() { $auth = new AuthenticationService(); $auth->clearIdentity(); \Zend\Session\Container::getDefaultManager()->destroy(); return $this->plugin('redirect')->toUrl('/admin'); }
Dernière modification par irumi (30-04-2013 17:56:30)
Hors ligne
Salut, normalement un clearIdentity() fonctionne donc c'est assez bizarre. Tu peux montrer ton code de connexion pour voir ?
Hors ligne
Mon code de connexion
[lang=php] public function loginAction() { $form = new LoginForm(); $request = $this->getRequest(); if ($request->isPost()) { $formData = $request->getPost();//on récupère les données postées $form->setData($formData);//on remet les donnée dans les éléments de formulaire if ($form->isValid()) { //on récupère l'adaptateur de base de donnée $sm = $this->getServiceLocator(); $dbAdapter = $sm->get('db-adapter'); //on met en place l'autentification via la base de données (adaptateur, tableUser, colonneLogin, colonnePasse, TraitementPasse) $authAdapter = new AuthAdapter($dbAdapter,'users','login','passe'); $bcrypt = new \Zend\Crypt\Password\Bcrypt(); $bcrypt->setSalt('.....'); $authAdapter->setIdentity($formData['login'])->setCredential($bcrypt->create($formData['passe']));//on met les donnée d'identification $auth = new AuthenticationService();//on utilise le service d'autentification pour garder le résultat en session $result = $auth->authenticate($authAdapter); if($result->isValid()) {//si c'est valide $stockage = $auth->getStorage();//on récupère l'espace de stockage $stockage->write($authAdapter->getResultRowObject(array( 'login', 'role')));//on inscrit l'identiter dans un objet ayant pour atribue les collonne passé en paramètre (ici: login et role) return $this->plugin('redirect')->toUrl('/admin'); }else { $form->get('passe')->setMessages(array('Identifiant ou/et mot de passe incorrecte.')); } } } return array('form' => $form); }
Hors ligne
Ok, je n'ai rien dit ... Je suis un boulet. En faite je testait la déconnexion d'un utilisateur autre que admin et en faite, il n'avait pas le droit d’accéder à la page logout.
J'ai un peut honte.
Merci quand même
Hors ligne
Ok super par contre je tiens quand même à te prévenir que le contrôleur n'est pas là pour faire les actions que tu fais : vérifier que l'authentification est correcte. C'est un service qui doit s'en charger ça fait plus propre
Hors ligne