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 :

auto login avec symfony 2.8


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    symfony2
    Inscrit en
    Mars 2016
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Tunisie

    Informations professionnelles :
    Activité : symfony2

    Informations forums :
    Inscription : Mars 2016
    Messages : 124
    Par défaut auto login avec symfony 2.8
    Salut, je peux faire auto login (j'utilise fosuserBundle),j'ai une page ajout article quand il accéde à cette page il fait auto login , je fait cette action qui permet auto login quand il accéde à la page mais l'erreur qui je trouve que quand il accéd à la page il ouvre page login (quand il remplir username et password accéd à la page d'ajout article),comment faire auto login et merci d'avance


    routing:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        ajouterapps:
            path:     /ajouterapps
            defaults: { _controller: MedBundle:Apps:ajouter }
    code controller :

    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
    37
    38
    39
    40
    41
    42
                public function ajouterAction( ) {
     
     
            $em = $this->getDoctrine();
            $repo  = $em->getRepository("UserBundle:User"); //Entity Repository
            $user = $this->getUser();
            if (!$user) {
                throw new UsernameNotFoundException("User not found");
            } else {
                $token = new UsernamePasswordToken($user, null, "your_firewall_name", $user->getRoles());
                $this->get("security.context")->setToken($token); //now the user is logged in
     
                //now dispatch the login event
                $request = $this->get("request");
                $event = new InteractiveLoginEvent($request, $token);
                $this->get("event_dispatcher")->dispatch("security.interactive_login", $event);
            }
                    $msg = 'ajouter Apps';
                    $em = $this->getDoctrine()->getManager();
                    $app = new Apps();
                    $form = $this->createForm(new AppsType , $app);
                    $request = $this->getRequest();
     
                    if ($request->getMethod() == 'POST') {
                        $form->handleRequest($request);
     
                            $app->upload(); 
                            $em->persist($app);
                            $em->flush();
                            $msg = 'Apps ajouter avec success';
                        }
     
     
                        return $this->render('MedBundle:Apps:ajouter.html.twig',array(
                            'form'=>$form->createView(),
                            'msg'=>$msg
     
                        )
                                );
     
     
                }

    quelle est la solution et merci d'avance

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2013
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2013
    Messages : 739
    Par défaut
    Voila une bonne route ici

  3. #3
    Membre confirmé
    Homme Profil pro
    symfony2
    Inscrit en
    Mars 2016
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Tunisie

    Informations professionnelles :
    Activité : symfony2

    Informations forums :
    Inscription : Mars 2016
    Messages : 124
    Par défaut
    Citation Envoyé par MehrezLabidi Voir le message
    Voila une bonne route ici

    je met cette action en controller

    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
     
     
        use Symfony\Bundle\FrameworkBundle\Controller\Controller;
        use Symfony\Component\HttpFoundation\Response;
        use test\MedBundle\Entity\Apps;
        use test\MedBundle\Entity\Affichage;
        use test\MedBundle\Form\AffichageType;
        use test\MedBundle\Form\AppsType;
        use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;  
        use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;
        use Symfony\Component\Security\Core\Exception\UsernameNotFoundException;
        use test\UserBundle\Entity\User;
        use Symfony\Component\HttpFoundation\RedirectResponse;
        use Symfony\Component\HttpFoundation\Request;
        use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
     
     
        public function autoLoginAction(Request $request, User $user)
        {
    $em = $this->getDoctrine();
    $repo  = $em->getRepository("UserBundle:User"); //Entity Repository
    $user = $this->getUser();
     
             $firewallName = $this->container->getParameter('fos_user.firewall_name');
     
            $token = new UsernamePasswordToken($user, $user->getPassword(), $firewallName, $user->getRoles());
            $this->get('security.context')->setToken($token);
            $request->getSession()->set('_security_main', serialize($token));
            $url = $this->generateUrl('fos_user_registration_confirmed');
            $response = new RedirectResponse($url);
     
            return $response;
        }
    et dans routing:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    auto:
        path:     /auto/{loginToken}
        defaults: { _controller: MedBundle:Apps:autoLogin }

    voici l'erreur qui je trouve :

    Nom : 1.png
Affichages : 413
Taille : 38,7 Ko

  4. #4
    Membre confirmé
    Homme Profil pro
    symfony2
    Inscrit en
    Mars 2016
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Tunisie

    Informations professionnelles :
    Activité : symfony2

    Informations forums :
    Inscription : Mars 2016
    Messages : 124
    Par défaut
    aide moi s'il vous plait

  5. #5
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2013
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2013
    Messages : 739
    Par défaut
    En suivant le tuto , je vois que tu utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $em = $this->getDoctrine();
    $repo  = $em->getRepository("UserBundle:User"); //Entity Repository
    $user = $this->getUser();
    la 3eme ligne , recupere l'objet user authentifié alors que c'est n'est pas encore authentifié , il n'a pas de Token déja !
    Ainsi User est un object Not foud .
    Essaie de vider le cache et de supprimer les 3 lignes décrits dessus .

  6. #6
    Membre confirmé
    Homme Profil pro
    symfony2
    Inscrit en
    Mars 2016
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Tunisie

    Informations professionnelles :
    Activité : symfony2

    Informations forums :
    Inscription : Mars 2016
    Messages : 124
    Par défaut
    avec cette fonction quand il visite à l'adresse /auto/{token} (adresse auto login) , il edirige à la page 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
        public function autoLoginAction(Request $request, User $user)
        {
     
    $em = $this->getDoctrine();
    $repo  = $em->getRepository("UserBundle:User"); //Entity Repository
    $user = $this->getUser();
    if (!$user) {
        throw new UsernameNotFoundException("User not found");
    } else /*{
        $token = new UsernamePasswordToken($user, $password, "your_firewall_name", $user->getRoles());
        $this->get("security.context")->setToken($token); //now the user is logged in
         
        //now dispatch the login event
        $request = $this->get("request");
        $event = new InteractiveLoginEvent($request, $token);
        $this->get("event_dispatcher")->dispatch("security.interactive_login", $event);  */
    {
            $token = new UsernamePasswordToken($user, null, 'main', $user->getRoles());
    $this->container->get('security.context')->setToken($token); 
            $this->get('session')->set('_security_main', serialize($token));
            $this->get( 'event_dispatcher' )->dispatch(
            AuthenticationEvents::AUTHENTICATION_SUCCESS,
            new AuthenticationEvent( $token ) ); 
     
     
     
    }
        }
    quelle est le probléme ??

Discussions similaires

  1. Social login avec Symfony 3 et 2
    Par Invité dans le forum Symfony
    Réponses: 2
    Dernier message: 21/02/2016, 23h10
  2. [1.x] Problème de login avec application créée sous symfony
    Par badokely dans le forum Symfony
    Réponses: 3
    Dernier message: 06/11/2013, 23h18
  3. script login avec telnet
    Par olive_le_malin dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 14/10/2005, 15h37
  4. Problème de login avec Postgresql
    Par maddog2032 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 27/04/2005, 13h19
  5. Fiche Login avec une application MDI
    Par Andry dans le forum Composants VCL
    Réponses: 6
    Dernier message: 13/09/2004, 11h46

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