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

Symfony PHP Discussion :

user dans le token qui change à chaque page [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 117
    Points : 62
    Points
    62
    Par défaut user dans le token qui change à chaque page
    Bonjour à tous,

    Voici mon soucis. J'ai mis en place le système d'authentification de symfony 2.0. Pour m'authentifier et récupérer des informations sur les utilisateurs j'utilise un accès à un web service. J'arrive bien à me connecter et récupérer les informations, mais j'ai une problèmatique :

    Je voudrais pouvoir enregistrer mon utilisateur avec l'ensemble des informations le concernant (nom, prénom, @mail) lors de la connexion et que cet objet "persiste" tout le long de la session. Or, je me suis aperçu qu'a chaque changement de page, l'utilisateur était rechargé.

    Est-ce que quelqu'un connait un moyen de faire ce que je veux faire ?

    Merci pour votre aide.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 117
    Points : 62
    Points
    62
    Par défaut
    Bonjour,

    Personne ne sait comment résoudre ce soucis ? J'ai continué à chercher de mon côté mais je n'ai toujours pas trouvé.

    Merci.

  3. #3
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Points : 677
    Points
    677
    Par défaut
    Bonjour,

    Il faut que tu post un peu de code pour que l'on comprenne.

    Je suppose que tu dois avoir un user provider custom ?

    Et est ce que tu souhaites faire c'est ne plus charger les utilisateurs depuis le webservice mais éventuellement depuis une base de donnée ?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 117
    Points : 62
    Points
    62
    Par défaut
    Bonjour,

    Effectivement j'ai un user provider custom. Je charge mes utilisateurs via un web service comme ceci :

    J'ai un User custom qui ressemble à ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class MyUser implements UserInterface
    {
        private $username;
        private $firstName;
        private $lastName;
        private $mail;
        private $phone;
       ...
       getters et setters;
    }
    Puis j'ai mon user provider :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public function loadUserByUsername($username)
        {
            // On créé un utilisateur avec seulement le Username. 
            // Il sera utilisé lors du authenticate du provider
            $user = new MyUser($username, "", null, array("ROLE_ADMIN"));
     
            return $user;        
        }
    L'authentification se fait via un web service comme ceci, dans le 'authenticate()' du authenticationProvider :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    class MyAuthenticationProvider implements AuthenticationProviderInterface
    {
        private $userProvider;
        private $cacheDir;
     
        ....
     
        /**
         * On appelle la fonction d'authentification afin de savoir si l'utilisateur
         * peut s'authentifier au service
         * 
         * @param \Symfony\Component\Security\Core\Authentication\Token\TokenInterface $token
         * @return ...\SecurityBundle\Security\Authentication\Token\MyUserToken
         * @throws AuthenticationException
         */
        public function authenticate(TokenInterface $token)
        {        
            $user = $this->userProvider->loadUserByUsername($token->getUsername());
     
            // On vérifie si l'utilisateur peut s'authentifier en utilisant le web service
            $ws = new \WSConnect($user->getUsername(), $token->getCredentials());
            // On demande si la connexion est autorisée
            $response = $ws->connect();
     
            if ($user && $response === true) 
            {            
                $authenticatedToken = new MyUserToken($user, $password, "user", $user->getRoles());
     
                $authenticatedToken->setUser($user);
     
                return $authenticatedToken;            
            }
     
            throw new AuthenticationException('Erreur lors de l\'authentification.');
        }
    Ma problèmatique est multiple :

    Je ne sais pas où je dois mettre mes autres appels web services permettant de récupérer les informations utilisateurs (nom, prénom, @, ...). Dans le user provider, le authentication provider, ailleurs ???

    De plus, je ne sais pas comment faire pour garder l'instance de mon objet MyUser complété avec les données récupérées via les web services tout le long de la session. Je ne voudrais pas avoir à réappeller les web services à chaque changement de page, car c'est consommateur en ressource. Et, si possible, je ne voudrais pas passer par une BDD.

    J’espère avoir été plus clair.

  5. #5
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Points : 677
    Points
    677
    Par défaut
    Si pas de bdd oui tu peu en stocker en session ou cookies. je pense. er pourquoi pas de bdd ?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 117
    Points : 62
    Points
    62
    Par défaut
    En fait les données sont déjà dans une BDD, et je vois pas l'intérêt de les mettre dans une autre BDD. Je pense donc que je vais stocker les infos utilisateurs dans la session.

    Merci pour ton aide.

  7. #7
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Points : 677
    Points
    677
    Par défaut
    De rien

    Désolé pour l'écriture, écrire en voiture c'est pas top

    Pense à passer en résolu le sujet.

    A bientôt.

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

Discussions similaires

  1. [JMeter] Récupration d'une variable qui change à chaque process
    Par vendeeman dans le forum Tests et Performance
    Réponses: 3
    Dernier message: 11/12/2007, 12h00
  2. Slogan qui change chaque mois
    Par Ercohuma59 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 30/08/2007, 17h42
  3. Requête dans une table qui change d'emplacement
    Par adrien.gendre dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 01/08/2007, 12h13
  4. Liens dans un tableau qui change le contenu d'un autre case da ce tableu
    Par maxtofurious dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 13/06/2007, 17h09

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