IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MVC PHP Discussion :

Redirection page login si pas connecté


Sujet :

MVC PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 26
    Par défaut Redirection page login si pas connecté
    Bonjour,
    je me suis mis il y a peut à zend framework et je suis donc débutant dans cette approche de php basée sur de la poo. Mon problème est le suivant : j'ai créé une page de login toute simple à l'aide de Zend_Form qui me permet d'authentifier les utilisateurs faisant partie de la table user. Il faut donc maintenant que je redirige tout ceux qui ne sont pas authentifier vers cette page de login. Voici ce que je fait pour l'indexController :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	public function preDispatch()
    	{
    		$auth = Zend_Auth::getInstance();
    		if ($auth->hasIdentity()) 
    		{
    			$user = $auth->getIdentity();
    		    $this->view->bienvenue = $user;
    		}
    		else
    			$this->_helper->redirector('index', 'login');
    	}
    Cela fonctionne mais j'aimerais que cette fonction soit générale car dans ce cas de figure, je devrai recopier cette fonction dans tout mes controllers :s
    J'ai essayer de le mettre dans index.php qui est le bootstrap mais je n'y suis pas arrivé. Si quelqu'un peut m'épauler, ce serait sympathique

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Bonjour,

    Je vais devoir implémenter la même chose, donc je suis intéresser par toutes réflexions.

    Mais dans un premier jet, je serais sûrement parti sur base d'un controller abstrait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    abstract class NewZendController extends Zend_Controller_Action 
    {
    	function init()
    	{
    		$auth = Zend_Auth::getInstance();
    		if ($auth->hasIdentity()) 
    		{
    			$user = $auth->getIdentity();
    		    $this->view->bienvenue = $user;
    		}
    		else
    			$this->_helper->redirector('index', 'login');
    	}
     
    }
    mes controllers suivants hériterais de cette classe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    class NouveauController extends NewZendController
    {
          function init()
          {
               parent::init();
     
           }
    }

  3. #3
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Bonjour,

    une autre solution est probablement l'utilisation d'un Plugin, qui vérifie l'authentification avant le routage :
    http://framework.zend.com/manual/fr/...r.plugins.html

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Par défaut
    Il y a à mon avis une solution plus simple : créer un pluggin, qui sont notamment prévus pour réaliser des actions nécessaires à chaque page.
    Perso, j'ai crée un plugin GlobalAction, qui réalise toutes les actions nécessaires à chaque page : login, acl, récupération des configs, logs... en preDispatch() ou postDispatch().

    Extrait de mon fichier GlobalAction.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class My_Controller_Plugin_GlobalAction extends Zend_Controller_Plugin_Abstract
    {
        /**
        * Initialise toutes les actions en pre-dispatch
        *
        * @param  Zend_Controller_Request_Abstract $request
        * @return void
        */
        public function preDispatch(Zend_Controller_Request_Abstract $request)
        {
            // authentification
            $this->_auth();
            // ici tes instructions
        }
    Et dans le bootstrap :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // configuration du frontController
    $frontController = Zend_Controller_Front::getInstance();
    $frontController->registerPlugin(new My_Controller_Plugin_GlobalAction());
    Tout ce que tu mets dans le pluggin sera alors exécuté à chaque page : exactement ce que tu souhaitais.

    EDIT : battu de 2 min par Eusebe !

  5. #5
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Juste une question, dans votre arborescence, vous la mettez où votre classe.

    Vous créez un nouveau répertoire 'plugin' dans /app(par exemple), ou vous le mettez dans /library ?

    C'est juste pour être cohérent !

    Merci

  6. #6
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Si je reprend l'exemple de vg33, je la mettrais personnellement dans library/My/Controller/Plugin/GlobalAction.php

  7. #7
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Par défaut
    Citation Envoyé par Eusebe Voir le message
    Si je reprend l'exemple de vg33, je la mettrais personnellement dans library/My/Controller/Plugin/GlobalAction.php
    Tout à fait d'accord

  8. #8
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    J'hésitai , merci pour la confirmation

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 22/07/2010, 14h56
  2. Redirection vers une page HTML si pas de plugin SL
    Par PPierre59 dans le forum Silverlight
    Réponses: 4
    Dernier message: 17/06/2010, 14h47
  3. La page master ne s'applique pas à la page Login.apsx
    Par insane_80 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 24/06/2009, 13h14
  4. Redirection, ca ne marche pas depuis une page 404 ?
    Par TicTacToe dans le forum Langage
    Réponses: 16
    Dernier message: 02/03/2006, 10h54
  5. [VB.NET] Durée vie var session vs redirect page login
    Par fabthebreton dans le forum ASP.NET
    Réponses: 5
    Dernier message: 16/12/2004, 17h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo