Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 24-09-2007 12:56:10

verrec_s
Membre
Lieu: Paris
Date d'inscription: 19-09-2007
Messages: 26

Problème de boucle à cause d'un preDispatch

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:

Code:

/*
     * 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

 

#2 01-10-2007 09:19:32

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: Problème de boucle à cause d'un preDispatch

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


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#3 04-10-2007 22:31:16

verrec_s
Membre
Lieu: Paris
Date d'inscription: 19-09-2007
Messages: 26

Re: Problème de boucle à cause d'un preDispatch

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 smile

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages