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 :

Zend_Auth et Cookie Remember me


Sujet :

Zend_Acl & Zend_Auth PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2003
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 145
    Par défaut Zend_Auth et Cookie Remember me
    Bonjour à tous,

    J'ai suivi le tutorial de Rob Allen traduit sur ce site et j'aimerais ajouter une fonctionnalité "Remember me" au formulaire de login.

    Quelqu'un peut-il m'aider ?

    Merci

  2. #2
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    J'ai fait une telle fonctionnalité pour mon site. Je ne suis pas sûr que ma manière de faire soit très élégante mais bon, elle est fonctionnelle.

    J'ai crée une classe CookieManager, avec des fonctions statiques "addCookie", "getCookie", "hasCookie" et "removeCookies" pour gérer les cookies. Ensuite, dans une classe SessionManager, j'ai fait une fonction statique loadSession qui, s'il n'y a pas de session chargée actuellement dans Zend_Auth, vérifie la présence de Cookie, et le cas échéant, récupère les informations de ce cookie et charger un Zend_Auth.

    J'appelle cette fonction dans chaque controller, dans la fonction init. Ce côté répétitif me gène un peu mais je n'ai rien trouvé de mieux, en plus du fait que je n'ai pas vérifié si le Zend Framework ne proposait pas cette fonctionnalité directement dans Zend_Auth.

    Quoi qu'il en soit, c'est une solution intermédiaire simple et qui marche très bien.

    Si tu as besoin de plus de précision sur les classes et fonctions, tu n'as qu'à demander

    Bonne chance.

  3. #3
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2003
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 145
    Par défaut
    Alors voilà, par rapport au tutorial et à différentes lectures cette après-midi, j'ai trouvé ceci :

    Dans le fichier login.phtml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	<input type="checkbox" name="rememberme" value="remember">Se souvenir de moi</input>
    Dans le fichier AuthController.php (fonction loginAction) en dessous de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
          $username = $f->filter($this->_request->getPost('username'));
          $password = $f->filter($this->_request->getPost('password'));
    j'ajoute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          $rememberme = $f->filter($this->_request->getPost('rememberme'));
    et ensuite en dessous de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
              $data = $authAdapter->getResultRowObject(null, 'password');
              $auth->getStorage()->write($data);
    j'ajoute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
              if ($rememberme == 'remember') {
              	Zend_Session::rememberMe();
              }
    (2 semaines par défaut)

    Et dans la fonction logoutAction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Zend_Session::forgetMe();
    et cela semble fonctionner pas mal.

    J'ai entendu dire que cela ne fonctionne plus le lendemain. Je vérifierai...

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 13
    Par défaut
    Cette technique fonction à condition que Zend_Session::start() soit appelé après Zend_Session::rememberMe().

    Ce qui devient problématique si Zend_Session::start() est appelé au départ dans le bootstrap.

    Un moyen de contourner le problème est de se servir d'un cookie pour signaler au bootstrap d'appeler Zend_Session::rememberMe();

    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
     
    // Dans AuthController
    // cookie pour notifier au bootstrap l'appel de Zend_Session::remeberMe()
    if($this->_form->rememberme){
        setcookie("Zend_Auth_RememberMe", 1209600, time()+6000, '/');
    }else{
        setcookie("Zend_Auth_RememberMe", 0, time()+6000, '/');
    }
     
     
    // Dans le bootstrap
    if(isset($_COOKIE["Zend_Auth_RememberMe"])){
        Zend_Session::rememberUntil($_COOKIE["Zend_Auth_RememberMe"]);
        unset($_COOKIE["Zend_Auth_RememberMe"]);
    }
    Zend_Session::start();

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

Discussions similaires

  1. [Zend_Auth] Cookie Se rappeler de moi
    Par salmoucha dans le forum Zend_Acl & Zend_Auth
    Réponses: 2
    Dernier message: 11/04/2008, 12h43
  2. Probleme d'éffacement dans le cookie
    Par Geulderack dans le forum XMLRAD
    Réponses: 6
    Dernier message: 02/04/2003, 14h17
  3. Les Cookies 4° ! : LA SOLUTION
    Par Ph. B. dans le forum XMLRAD
    Réponses: 2
    Dernier message: 31/01/2003, 16h46
  4. Les cookies 3° !!!
    Par Ph. B. dans le forum XMLRAD
    Réponses: 6
    Dernier message: 28/01/2003, 18h13
  5. [XMLRAD] Cookies pour login
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 9
    Dernier message: 23/12/2002, 17h47

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