Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
une fois de plus, un petit soucis avec Doctrine 2 mais sur la partie authentification...
J'ai suivi la doc du module Doctrine pour l'authentification (https://github.com/doctrine/DoctrineMod … ication.md) mais je suis bloqué au moment d'écrire mon entity dans en session.
Voici comment j'ai procédé. Dans mon Module.php, je renseigne cette factory :
[lang=php] 'AuthService' => function($sm){ return $sm->get('doctrine.authenticationservice.orm_default'); },
Au niveau de mon fichier module.config.php, j'ai mis :
[lang=php] 'doctrine' => [ 'authentication' => [ 'orm_default' => [ 'object_manager' => 'Doctrine\ORM\EntityManager', 'identity_class' => 'User\Entity\User', 'identity_property' => 'userid', 'credential_property' => 'password', 'credential_callable' => function (User $user, $password) { return ma_fonction_pour_check_le_password; } ] ] ],
Ensuite, dans mon controller, je récupère le service Auth :
[lang=php] // $value contient les informations issues du formulaire d'autentification $authService = $this->authService; $adapter = $authService->getAdapter(); $adapter->setIdentity($value->userid); $adapter->setCredential($value->password_); $result = $authService->authenticate(); if ($result->isValid()){ $user = $result->getIdentity(); $authService->getStorage()->write($user); return true; } else { $this->flashMessenger()->addMessage($translator->translate('error connection')); $this->redirect()->toRoute('auth', array('action' => 'index')); } return false;
Le problème se situe, je pense, au niveau de la ligne $authService->getStorage()->write($user).
Quand je débug $user, je récupère bien l'entité mais il semblerait que je ne puisse pas écrire les infos relatives à l'utilisateur en session. Les infos de connection (identifiants et mot de passe) sont bon car je rentre bien dans la condition $result->isValid().
De plus, quand je débug $this->identity() dans ma vue, elle me retourne null...
J'ai donc pour résultat que je ne suis pas loggé au niveau de mon application.
Une idée ?
Merci d'avance,
Romain
Hors ligne
OK.
je viens plus ou moins de comprendre d'où vient le problème.
En fait, j'initialise une session au bootstrap du module Auth. Après quelques recherches, j'ai remarqué que lorsqu'on utilise Doctrine, il utilise le storage par défaut de zend (Zend\Authentication\Storage\Session) avec le namespace de la session à Zend_Auth.
Or, de mon côté, je créé un session avec un namespace différent...
Y a-t-il possibilité que les deux sessions créés entrent en conflit ?
Comment pourrais-je indiqué à Doctrine utiliser la session que je créé pour y stocker les identifiants ?
Hors ligne