J'ai implémenté Zend Auth en créant un getServiceConfig()
-comme AuthenticationService
objet dans Module.php
:Comment utiliser Zend Auth pour rendre les valeurs disponibles à l'échelle mondiale dans chaque action et layout.phtml
'AuthService' => function($sm) {
$dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
$dbTableAuthAdapter = new DbTableAuthAdapter($dbAdapter, 'tblUSRUsers', 'Email', 'Password', "MD5(?)");
$authService = new AuthenticationService();
$authService->setAdapter($dbTableAuthAdapter);
$authService->setStorage($sm->get('Application\Model\MyAuthStorage'));
return $authService;
},
Dans l'action du contrôleur, je suis obtenir cet objet par
$this->getServiceLocator()
->get('AuthService');
Pour l'authentification j'obtenir les valeurs à l'aide
$authservice = $this->getServiceLocator()->get('AuthService');
$arrUserDetails = $authservice->getIdentity();
Cela fonctionne très bien, ces valeurs sont disponibles.
Mais le problème est que ServiceLocator
n'est pas disponible dans le constructeur du contrôleur et ne peut donc pas écrire le code ci-dessus. Ecrire ce code dans chaque action ne semble pas être une bonne pratique. Quelqu'un peut-il m'aider?
Supposons que je doive passer le nom de l'utilisateur connecté à layout.phtml. Je veux définir cette information à travers le constructeur pour la mise en page. Mais, $ this-> getEvent() -> getParam ('userinfo'); n'est pas non plus disponible dans le constructeur. Donc, en me forçant à le mettre dans chaque action. – Bhuvi
Si vous en avez besoin dans la mise en page, mettez-le là. Voir ma mise à jour – akond
Merci. Je souhaite également rediriger l'utilisateur vers la page de connexion s'il n'est pas authentifié. Pour cela, j'écris if (! $ Auth-> hasIdentity()) { $ controller = $ e-> getTarget(); return $ controller-> plugin ('redirect') -> toRoute ('login'); } dans la fonction onBootstrap elle-même.Mais, il montre "Erreur fatale: Appel à la méthode non définie Zend \ Mvc \ Application :: redirect()" Pourriez-vous s'il vous plaît également spécifier comment cela peut être réalisé? – Bhuvi