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

Zend_Acl & Zend_Auth PHP Discussion :

Identification, redirection et passage de variables


Sujet :

Zend_Acl & Zend_Auth PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 10
    Par défaut Identification, redirection et passage de variables
    Bonjour,

    J'ai réalisé un script qui fonctionne bien mais je me demande s'il n'existe pas un moyen plus propre de réaliser ce que j'ai fait.

    Mon application comporte :
    - un controlleur d'authentification (controller Auth, actions login et logout)
    - un formulaire de connexion
    - un plugin qui me sert à gérer l'authentification et la gestion des droits
    - une architecture MVC avec un layout qui affiche le formulaire de connexion

    Il est donc possible de se connecter via /auth/login ou sur n'importe qu'elle page du site via le formulaire présent dans le layout.

    Afin que l'utilisateur puisse se conecter depuis n'importe quelle page, j'ai crée un postDispatch dans mon plugin qui redirige vers auth/login.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public function postDispatch($request) // Fonction appellée après le controlleur (cf schéma du parcours d'une requête dans le framework)
    { // Sert à gérer le cas où l'utilisateur tente de se connecter par la zone de connexion présente sur toutes les pages : Récupère les données (par POST) et les transmet au controlleur Auth (action login) par GET
    	if ($this->_request->isPost() AND $this->_request->getPost('id') == 'authHead') // Si un formulaire a été posté et que son id vaut authHead (ie si le formulaire de login présent sur toutes les pages a été rempli) 
    	{
    		// Récupération des valeurs du formulaires
    		$username = $this->_request->getPost('username');
    		$password = $this->_request->getPost('password');
     
    		$redirector = Zend_Controller_Action_HelperBroker::getStaticHelper('redirector'); // Appel à l'aide de vue redirector (nécessaire pour faire une redirection depuis un plugin, d'autres méthodes peuvent être utilisées pour des redirections depuis un controlleur)
    		$redirector->gotoUrl('/auth/login/isPost/yes/username/' . $username . '/password/' . $password) // On redirige vers la page de login en passant le nom d'utilisateur et le mot de passe par méthode GET ainsi qu'un paramète qui servira à dire au controlleur Auth que le formulaire a été rempli
    			   ->redirectAndExit();	   
    	}
    }
    Vu comme je surcommente mon code (je débute sous Zend), je pense que tout le monde aura compris que je récupère les données transmises puis les transmet à auth/login par méthode GET.

    J'ai du adapté mon plugin pour qu'il prenne en compte le cas d'une connexion qui ne passerait pas directement par auth/login car il utilisait isPost pour savoir si le formulaire avait été rempli. Je pense que c'est cette partie de mon code qui n'est pas très propre : je passe en paramètre un argument isPost qui vaut yes que j'exploite ensuite dans auth/login comme ceci :

    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
    17
    18
    19
     
    $isPost = $this->_request->getParam('isPost');
     
    if ($this->_request->isPost() OR $isPost == 'yes') // Si le formulaire a été rempli (méthode POST s'il est rempli depuis la page d'authentification et isPost = 'yes' s'il est rempli depuis la zone d'authentification présente sur chaque page) 
    {
     	// Récupération des valeurs 
    	if($isPost == 'yes') // Variables passées par GET si les données viennent du formulaire head (récupérées dans le dispatch du pluginAuth et passée par GET)
    	{
    		$username = $this->_request->getParam('username');
    		$password = $this->_request->getParam('password');	
    	}
     
    	else // Variables passées par POST si les données proviennent du formulaire de la page d'authentification classique
    	{
    		$username = $this->_request->getPost('username');
    		$password = $this->_request->getPost('password');			
    	}
    ...
    }
    Je me demande donc s'il n'existe pas une meilleure façon de gérer les formulaires redirigés.

    Utiliser les sessions ? Elles servent justement dans ce genre de cas normalement...

    Transmettre mes arguments à auth/login en POST et non pas en GET ? Je n'ai rien trouvé à ce sujet.

    Merci à vous.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2010
    Messages : 118
    Par défaut
    Bonjour,

    J'ai lu ton sujet et ma première impression:
    - pourquoi tu ne définis pas l'action à exécuter (ici Auth/login) au niveau de ton formulaire, si ton formulaire est sur toutes les pages ?
    - Plus besoin de plugin pour contrôler le formulaire d'authentification.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 10
    Par défaut
    - pourquoi tu ne définis pas l'action à exécuter (ici Auth/login) au niveau de ton formulaire, si ton formulaire est sur toutes les pages ?
    Tout simplement parce que je ne connaissais pas cette possibilité.
    J'aurai pu/du deviner que ça existait mais comme dit au dessus, je débute.

    Si ça peut servir à quelqu'un d'autre, la syntaxe est : $form->setAction('Auth/login');

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

Discussions similaires

  1. redirection et passage de variables
    Par bruno.rotrou dans le forum MVC
    Réponses: 4
    Dernier message: 17/04/2012, 15h09
  2. redirection avec passage de variable
    Par laurentSc dans le forum Langage
    Réponses: 5
    Dernier message: 23/06/2010, 22h57
  3. passage de variables lors d'une redirection
    Par toma03 dans le forum Langage
    Réponses: 4
    Dernier message: 06/12/2007, 18h57
  4. [Conception] Passage De Variable Avec Post Via Un Script Php + Redirection
    Par british_toons dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 26/09/2006, 16h57
  5. [langage] Passage de variables...
    Par martijan dans le forum Langage
    Réponses: 8
    Dernier message: 30/07/2003, 09h48

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