Symfony2 redirect for event listener?

后端 未结 5 822

I have a kernel event listener setup (kernel.controller) to redirect the user if hes not logged in. The event listener is succefully getting called, however im having troubl

相关标签:
5条回答
  • 2020-12-05 00:52

    This ain't no way to go, my friend. You should use a default Symfony Security to cover that for you...

    0 讨论(0)
  • 2020-12-05 01:03

    If you wanna redirect from FilterControllerEvent you should use this one:

    public function onKernelController(FilterControllerEvent $event)
    {
        // do something
        $event->setController(function() use ($redirectUrl) {
            return new RedirectResponse($redirectUrl);
        });
    }
    
    0 讨论(0)
  • 2020-12-05 01:05

    You can't set a response to a FilterControllerEvent object. You need to listen for the kernel.request event because its GetResponseEvent object has the setResponse() method:

    $route = 'route_name';
    
    if ($route === $event->getRequest()->get('_route')) {
        return;
    }
    
    $url = $this->router->generate($route);
    $response = new RedirectResponse($url);
    $event->setResponse($response);
    
    0 讨论(0)
  • 2020-12-05 01:05

    More ore less clear way to redirect on 'kernel.controller' event

    public function onKernelController(FilterControllerEvent $event)
    {
        /* @var $controller \Symfony\Bundle\FrameworkBundle\Controller\Controller */
        $controller = $event->getController()[0]; // PHP 5.4 or $controller = $controller[0];
    
        throw new HttpException(307, null, null, array('Location' => $controller->generateUrl('homepage')));
    }
    
    0 讨论(0)
  • 2020-12-05 01:07

    Here is a similar question about doing (almost) the same thing. It should give you a clue.

    Symfony 2 - redirect if the user is logged in

    Hope it helps.

    0 讨论(0)
提交回复
热议问题