在使用FOSUserBundle注册后,如何重定向到动态自定义路由

时间:2017-04-10 12:52:52

标签: php symfony fosuserbundle

我一直在寻找一段时间,但找不到答案。

预期行为:

  • 用户访问产品页面
  • 用户想要购买该产品,因此需要登录/注册(使用模式)
  • 用户没有帐户,因此他注册
  • 注册后(没有确认电子邮件),用户已登录并重定向到当前产品页面
  • 用户可以继续结帐, ...

此行为适用于登录,并在表单中使用_target_path参数。

但是,此参数不适用于注册。这有点烦人,我在哪里错过了什么?我正在考虑在注册成功事件上实现一个监听器,但是不像登录表​​单那么简单似乎很奇怪。

编辑:找到了我的解决方案,请参阅下面我自己的答案

2 个答案:

答案 0 :(得分:1)

回答那些想知道的人。

TL; DR:注册过程不遵循登录

感谢@yceruto的评论。

我在REGISTRATION_SUCCESS事件上快速倾听:

/**
 * @param FormEvent $event
 */
public function redirectOnRegistration(FormEvent $event)
{
    $route = $event->getRequest()->headers->get('referer', $this->router->generate('homepage'));
    $response = new RedirectResponse($route);
    $event->setResponse($response);
}

(如果没有引用者,我会在主页上重定向)。

答案 1 :(得分:0)

在您的安全设置中,您必须打开referer:

firewalls:
    dev:
        pattern: ^/(_(profiler|wdt|console)|css|images|js)/
        security: false

    main:
        pattern: ^/any_pattern
        anonymous: ~
        form_login:
            login_path: any_pattern_login
            check_path: any_pattern_login
            use_referer: true
        logout: true
        access_denied_handler: app.security.access_denied_handler
        guard:
            authenticators:
                - app.api_authenticator
            provider: api_provider
        logout:
            path: any_pattern_logout
            invalidate_session: true