Symfony2 - 注册后重定向到登录页面

时间:2015-12-03 05:43:50

标签: symfony

我有fosuserbundle的问题。我创建了一个自定义注册表单和操作,但它只在我登录时才有效

/**
 * @Route("/account/register", name="register_account")
 */
public function registerAction(Request $request) {

    $user = new User();

    $form = $this->createForm(new RegistrationType, $user);

    $form->handleRequest($request);

    /*$pwd = $user->getPassword();
    $encoder = $this->container->get('security.password_encoder');
    $pwd = $encoder->encodePassword($user, $pwd);
    $user->setPassword($pwd);*/

    if ($form->isValid()) {


    $user->addRole(User::ROLE_USER);
    $user->setEnabled(true);

        $this->addFlash('notice', 'Dodano!');
        $em = $this->getDoctrine()->getManager();
        $em->persist($user);
        $em->flush();

        return $this->redirectToRoute('register_account');
    }
    return $this->render('default/register.html.twig', ['form' => $form->createView() ]);
}

当我没有登录时,它会将我重定向到登录页面,我根本不知道我在哪里犯了错误

2 个答案:

答案 0 :(得分:0)

您犯了一个小错误:提交并验证表单后,您将重定向到初始操作register_account的相同路线。

尝试类似的东西:

/.../

return $this->redirectToRoute('succes_page');

/.../   

succes_page匹配控制器的其他操作。

答案 1 :(得分:0)

这是因为/account/register网址位于security firewall

您应该在不登录的情况下访问此网址。

security.yml文件上添加以下行:

security:
...
    firewalls:
    ...
        login_firewall:
            pattern:   ^/register/account
            anonymous: ~
        ...        
    access_control:
        - { path: ^/register/account, roles: IS_AUTHENTICATED_ANONYMOUSLY }

此外,您应该将重定向路由更改为其他不同的注册路由。这是一个无限循环。

此路线名称应该是成功页面或主页的其他内容。

return $this->redirectToRoute('register_account');

您始终可以获得有关Symfony安全组件here的更多信息。