登录重定向之前的Symfony

时间:2016-04-08 08:16:47

标签: php symfony fosuserbundle

我想在Symfony将我重定向到登录页面之前存储POST参数(如果我没有登录)。

我尝试在Request上设置一个监听器,但这不起作用。 我使用的是FOSUserBundle,但没有事件可以监听此重定向。

有人可以帮我这个吗?

2 个答案:

答案 0 :(得分:1)

找到它。

我将Request Listener的优先级更改为9。 (Symfony防火墙设置为8)。 非常有用的命令:php app/console debug:event-dispatcher

希望这可以帮助某人。

答案 1 :(得分:0)

在security.yml文件中,您可以声明此

form_login:
           // All others options that you need
           failure_handler: redirect_after_login_failed

在services.yml

中声明您的服务
redirect_after_login_failed:
    class: AppBundle\Redirection\AfterLoginFailedRedirection
    arguments: ["@router"]

在AppBundle / Redirection中

namespace AppBundle\Redirection;

class AfterLoginRedirection implements AuthenticationFailureHandlerInterface {

    /**
     * @var $router \Symfony\Component\Routing\RouterInterface
     */
    private $router;

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


    public function onAuthenticationFailure(Request $request, AuthenticationException $exception)
    {
        //Do what you want here

        //Redirect where you want
        $redirection = new RedirectResponse($this->router->generate(''));
        return $redirection;
    }

}
  • PS:您需要添加使用语句

如果用户被您的安全系统拒绝,并且在重定向到您的登录页面之前,您可以执行某些操作。