Redirection dans un Listener

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour,

J'essaye de faire une redirection dans un Listener. En gros j'ai deux pages de login un pour mobile et un pour PC. Je voudrais donc qu'en cas de succès ou erreur l'or de l'entrée des identifiants, l'user soit redirigé au bonne endroit.

 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
<?php
// AuthenticationListener.php

namespace Acme\UserBundle\Listener;

use Symfony\Component\Security\Core\Event\AuthenticationFailureEvent;
use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;
use Symfony\Component\Routing\Router;
use Symfony\Component\HttpFoundation\RedirectResponse;

class AuthenticationListener
{
    protected $router;

    public function __construct(Router $router)
    {
        $this->router = $router;
    }

    public function onAuthenticationFailure(AuthenticationFailureEvent $event)
    {
        if(preg_match("/m\/login/", $_SERVER['HTTP_REFERER'])){
            // var_dump('Hello'); die();
            return new RedirectResponse($this->router->generate('mobile_login'));
        }
    }

    public function onAuthenticationSuccess(InteractiveLoginEvent $event)
    {
        if(preg_match("/m\/login/", $_SERVER['HTTP_REFERER'])){
           return new RedirectResponse($this->router->generate('mobile_home'));
        }
    }
}

Le code marche, donc si je décommente la ligne 23 j'ai bien un Hello quand il faut. En sommes tout marche sauf la redirection, il s'en fout. Quoi qu'il arrive il redirige tout seul sur /login. Je n'ai pas d'erreur, rien !

Donc comment faire une redirection dans un listerner, car j'ai tout essayé.

Merci

+0 -0
Staff

C'est tout à fait normal. D'après la documentation, le OnAuthenticationXXX ne retourne rien.

Il faut utiliser un objet response et la méthode setResponse.

1
2
3
<?php
$response = new RedirectResponse($this->router->generate('mobile_home'));
$event->setResponse($response);

Édité par artragis

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte