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 :

Conflit de session entre membres


Sujet :

Zend_Acl & Zend_Auth PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 58
    Points : 44
    Points
    44
    Par défaut Conflit de session entre membres
    Bonjour,

    J'ai un gros soucis lié aux sessions sur mon site, il arrive parfois qu'on se retrouve connecté à la place d'un autre membre. Cela arrive après un changement de page quand on est déjà logué.

    Ce problème n'arrive pas systématiquement, mais des membres se plaignent régulièrement de ce problème.

    J'ai configuré les sessions avec :
    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
    [dev]
    use_cookies 		   = on
    use_only_cookies 	   = on
    use_trans_sid 		   = off
    strict				   = off
    remember_me_seconds = 0
    cookie_lifetime              = 0
    name		            = monsite_session
    gc_divisor			    = 1000
    gc_maxlifetime		    = 86400
    gc_probability		    = 1
     
    [prod : dev]
    cookie_domain               = .monsite.com
    remember_me_seconds  = 0
    cookie_lifetime               = 0
    gc_divisor			     = 1000
    gc_maxlifetime		     = 3600
    gc_probability		     = 1
    C'est appelé dans le bootstrap de la manière suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    /* SESSION */
    $config = new Zend_Config_Ini(APP_PATH.'/config/session.ini', APP_MODE);
    Zend_Session::setOptions($config->toArray());
    // Partage (et création ou restauration) de l'objet de session dans le registre
    // Ce premier appel à  new Zend_Session_Namespace démarre la session PHP
    Zend_Registry::set('session', $session = new Zend_Session_Namespace($config->name));
    Dans mon controleur login appelé sur toutes les pages, j'ai dans le init
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    /**
         * Appelel à  la construction : instancie Zend Auth
         */
        public function init()
        {
            $this->_auth = Zend_Auth::getInstance();
            $this->view->auth = $this->_auth;
        }
    et au moment du login après la vérification du login / mot de passe, j'enregistre en session de la manière suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
                /* on récupère les données du membre et les stocke en session */
                $res = $dbAdapter->getResultRowObject(array('idmembre', 'pseudo', 'email', 'pays'));
     
                $userNamespace = new Zend_Session_Namespace('user');
                $userNamespace->idmembre = $res->idmembre;
                $userNamespace->pseudo = $res->pseudo;
                $userNamespace->email = $res->email;
                $userNamespace->pays = $res->pays;
    Je ne comprends pas d'où peut venir le problème, est ce que ça pourrait avoir un lien avec les sous domaines et un conflit de session entre eux ?

  2. #2
    Membre éclairé Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Points : 663
    Points
    663
    Par défaut
    Salut!

    Déjà, n'utilise pas d'underscore dans le nom de ta session car, sauf erreur de ma part, il y a un bug sous IE qui ne gère pas ou mal les noms de session contenant un underscore.
    Donc monsite_session doit etre monsitesession

    Ensuite, tu dois utiliser Zend_Auth pour stocker les données utilisateur :
    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
     
    <?php
     
    $adapter = new Zend_Auth_Adapter_DbTable('objet_de_ta_base', 'user', 'login', 'pass', 'MD5');
    $adapter->setIdentity('toto');
    $adapter->setCredential('123456');
    $result = $adapter->authenticate();
     
    if ($result->isValid()) {
    $user = $adapter->getResultRowObject();
     
    Zend_Auth::getInstance()->getStorage()->write($user);
    // Sécurité évite les fixations de session
    Zend_Session::regenerateId();
    }
     
    ?>
    Du coup, n'importe ou dans ton application, si tu as besoin de récupérer les données utilisateur tu fait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
     
    $auth = Zend_Auth::getInstance();
     
    // L'utilisateur est connecté?
    if ($auth->hasIdentity()) {
    $user = $auth->getIdentity();
    }
     
    ?>
    Les idiots sont ceux qui ne posent jamais de question!

Discussions similaires

  1. [ZF 1.11] conflit de sessions : membre et administrateur
    Par themostmd dans le forum Zend_Acl & Zend_Auth
    Réponses: 6
    Dernier message: 22/08/2011, 16h53
  2. [Tomcat]échange de session entre php et java
    Par benwa dans le forum Tomcat et TomEE
    Réponses: 18
    Dernier message: 05/06/2007, 17h01
  3. échange de session entre APACHE et TOMCAT
    Par greatmaster1971 dans le forum Langage
    Réponses: 8
    Dernier message: 21/01/2006, 10h10
  4. [Sécurité] Variables de session entre pages
    Par kcizth dans le forum Langage
    Réponses: 4
    Dernier message: 09/01/2006, 11h29
  5. [VB.NET] Perte de session entre 2 projets
    Par TekP@f dans le forum ASP.NET
    Réponses: 3
    Dernier message: 02/05/2005, 09h12

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