2015-12-03 140 views
0

我有問題與fosuserbundle。我創建了一個自定義的登記表格和行動,但它只能當我登錄Symfony2 - 重定向到註冊後登錄頁面

/** 
* @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() ]); 
} 

,當我沒有登錄,它重定向我到登錄頁面我根本不知道我犯的錯誤

回答

0

你犯了一個小錯誤:當你的表格被提交和驗證後,你重定向到你的初始行動的相同路線register_account

嘗試類似的東西:

/.../ 

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

/.../ 

哪裏succes_page匹配您的控制器的另一個動作。

0

這是因爲/account/register url在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的更多信息。

+0

仍然沒有什麼,當我休息(用戶實體)在UserBundle中的時候,當這個動作的控制器在AppBundle中時,它會產生差異嗎? – lowlifedevice

+0

您是否已將該行放在'access_control'下的第一行?因爲symfony在第一場比賽停止。[更多](http://symfony.com/doc/current/cookbook/security/access_control.html) –

+0

仍然沒有,我的security.yml看起來像這個http://pastebin.com/ v4c4mi7k – lowlifedevice