Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 10-09-2008 13:48:09

deviltaz
Membre
Date d'inscription: 09-09-2008
Messages: 37

[Résolu][Zend_Auth]Problème avec une boucle de redirection

Bonjour,

je découvre le composant Zend_Auth et tente de l'incorporer à mon squelette d'appli.
J'utilise une identification par une bdd et un formulaire basique.
L'identification est fonctionnelle.

En revanche, je souhaiterais empêcher l'accès au site tant que l'utilisateur n'est pas identifié.
J'ai pour cela créé ma propre fonction preDispatch() dans laquelle si l'utilisateur n'a pas d'identité
j'éxécute une redirection vers mon formulaire d'identification : voir le code ci-dessous

Code:

    public function preDispatch()
    {
        $auth = Zend_Auth::getInstance();

        if (!$auth->hasIdentity() and $actionName='Index') {
            $this->_redirect('auth/login');
        }    
    }

En théorie, ça devrait fonctionner mais je tombe sur un message d'erreur : boucle de redirection!

C'est probablement le découpage de mon site qui ne convient pas à une telle structure.

Dans mon contrôleur 'Index', j'ai trois actions 'header', 'footer' et 'nav' qui sont appelées dans mon layout,
et mon formulaire d'identification utilise le même layout qui est unique pour l'ensemble du site.

Comment ne pas rediriger les requêtes faîtes à ces actions ?

Par avance merci de votre aide ;-)

PS : Le sujet est limite entre layout et auth, n'hésitez pas à le déplacer si vous jugez qu'il est au mauvais endroit.

Dernière modification par deviltaz (10-09-2008 15:35:27)

Hors ligne

 

#2 10-09-2008 14:20:46

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [Résolu][Zend_Auth]Problème avec une boucle de redirection

donc, ce sont tes fonctions header/footer et nav qui boucle ? c'est ca ?

Il y a pleins de solutions a vrai dire.

La plus 'gore' :
Tu test dans ton predispatch le valeur de $this->_request->getActionName() et adope ton comportement

La plus en vouge:
Utilise un Plugin en Predispatch qui change l'action à faire si il la personne n'est pas identifié


----
Gruiiik !

Hors ligne

 

#3 10-09-2008 14:21:29

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: [Résolu][Zend_Auth]Problème avec une boucle de redirection

Hello,

1. S'il n'est pas connecté, il ne faut pas que tu l'empêche d'accéder à la page de connexion !
2. Pourquoi attendre preDispatch ?

Code:

    public function dispatchLoopStartup (Zend_Controller_Request_Abstract $requete)
    {
        $auth = Zend_Auth::getInstance();

        // Notes le ==
        if (!$auth->hasIdentity() && !($requete->getControllerName() == 'auth' && $requete->getActionName()=='login' && $requete->getModuleName() == 'default') {
            // On modifie la requête sans faire de redirection.
            $requete->setControllerName('auth')
                     ->setActionName('login')
                     ->setModuleName('default')
                     ->setDispatched(false);
        }    
    }

A+

Dernière modification par mikaelkael (10-09-2008 14:22:00)


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#4 10-09-2008 14:37:07

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [Résolu][Zend_Auth]Problème avec une boucle de redirection

mikaelkael a écrit:

Hello,

1. S'il n'est pas connecté, il ne faut pas que tu l'empêche d'accéder à la page de connexion !
2. Pourquoi attendre preDispatch ?

Parce que en ce moment, je ne dit que des betises !

J'utilise moi-meme dispatchLoopStartup dans mes codes smile

preDispatch est un mot à la mode qu'on voit partout smile


----
Gruiiik !

Hors ligne

 

#5 10-09-2008 14:40:52

deviltaz
Membre
Date d'inscription: 09-09-2008
Messages: 37

Re: [Résolu][Zend_Auth]Problème avec une boucle de redirection

En effet, ce sont bien mes fonctions header, footer et nav qui provoquent la boucle.

La plus en vouge:
Utilise un Plugin en Predispatch qui change l'action à faire si il la personne n'est pas identifié

Grand débutant avec ZF la notion de plugin ne m'est pas familière, je vais éplucher la doc à ce sujet.

2. Pourquoi attendre preDispatch ?

Là encore, je découvre le fonctionnement de ZF et m'inspire pour l'instant des infos glanées dans divers tutos.
C'est dans le preDispatch que Rob Allen se sort d'une situation ressemblante dans l'un de ces guides, voila pourquoi.

dispatchLoopStartup interviendrait donc avant l'action du preDispatch ?
Quoi qu'il en soit, à quel niveau surcharger cette fonction afin d'éviter de se répéter ?

Merci de ces précisions ;-)

Hors ligne

 

#6 10-09-2008 15:04:40

fte
Membre
Lieu: 06 13 83
Date d'inscription: 16-05-2008
Messages: 112
Site web

Re: [Résolu][Zend_Auth]Problème avec une boucle de redirection

C'est juste avant d'après le beau diagramme de séquence de Philippe (merci) :
http://www.kitpages.fr/cms/site/tutoria … lobale.jpg

Et la doc raconte, http://framework.zend.com/manual/fr/zen … ugins.html :

# dispatchLoopStartup() est appelée juste avant que Zend_Controller_Front n'entre en boucle de dispatching.
# preDispatch() est appelée avant qu'une action ne soit dispatchée par le dispatcheur. Cette méthode permet un filtrage ou un proxy. En jouant sur la requête à ce niveau là, vous êtes capable de changer le processus, et en vous aidant de Zend_Controller_Request_Abstract::setDispatched(false)), vous supprimez l'ordre de dispatching de celle-ci.

Amen smile

Hors ligne

 

#7 10-09-2008 15:35:02

deviltaz
Membre
Date d'inscription: 09-09-2008
Messages: 37

Re: [Résolu][Zend_Auth]Problème avec une boucle de redirection

Un grand merci à vous.

J'en apprend énormément grâce à vous, petit à petit le voile se lève sur le ZF
et je commence à mieux appréhender la puissance de la bête ;-)

Hors ligne

 

#8 10-09-2008 16:06:33

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: [Résolu][Zend_Auth]Problème avec une boucle de redirection

Hello

nORKy, 1. et 2. ne correspondait pas aux messages mais à ma réflexion.
Nos messages se sont croisés wink.

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

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