Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
je suis actuellement en train de me mettre en place un Framework base sur du Flex et du Zend Framework et je n'avais aucune connaissance sur le sujet il y a de ca encore quelques jours.
J'ai donc suivi les tutoriaux de Kitpages afin de mettre en place l'arborecence de mon site et je dois dire que tout s'est bien passé.
J'ai suivi la documentation francaise de Zend pour mettre en place un système d'authentification basé sur Zend_Auth et un fichier DIGEST. Tout fonctionne bien.
C'est au moment de définir ma classe preDispatch() que le problème survient : j'ai une erreur Redirection de page incorrecte
AdminController:
/* * Initialisation */ function init() { $this->initView(); $this->view->baseUrl = $this->_request->getBaseUrl(); } /* * Fonction de controle d'accès aux pages sécurisées */ function preDispatch() { $auth = Zend_Auth::getInstance(); if (!$auth->hasIdentity()) { $this->view->message = 'Vous devez vous identifier pour accéder à ces pages'; $this->_redirect('/admin/login'); } } function indexAction() { $this->_redirect('/admin/login'); } /* * Fonction d'identification */ function loginAction() { $this->view->message = ''; if ($this->_request->isPost()) { // Authentification par DIGEST $auth = Zend_Auth::getInstance(); // Lecture du fichier .htpasswd du dossier PHP-INF $adaptateur = new Zend_Auth_Adapter_Digest(WEBAPP_DIR."/".PHPINF."/fichier_mdp", "Domaine", $this->_request->getPost('username'), $this->_request->getPost('password')); $resultat = $adaptateur->authenticate(); if ($resultat->isValid()) { $this->_redirect('/admin/controlPanel'); } else { $this->view->message = 'Mauvais login ou mauvais mot de passe'; } } $this->view->title = "Log in"; $this->render(); } function controlPanelAction() { }
J'ai donc rajouté un fichier de log, et je m'appercois qu'en tentant d'accéder à la page /admin/login il boucle un bonne vingtaine de fois sur l'URI/admin/login. Mais je ne comprends pas pourquoi...
Quelqu'un peu t'il m'éclairer ?
Hors ligne
Bonjour,
Quand tu fais un redirect dans ton preDispatch, tu fais une nouvelle requête vers le serveur. Le predispatch est de nouveau appelé et donc ça boucle, c'est normal.
A la limite dans ton preDispatch, tu peux vérifier que ça n'est pas la "loginAction" qui est appelée. Ca devrait résoudre ton problème.
A+, Philippe
Hors ligne
effectivement, je m'en suis rendu compte le lendemain après avoir pris un peu de recul.
merci pour ta réponse, et surtout merci pour ce site et tes tuto hyper bien
Hors ligne