2015-06-01 13 views
2

У меня проблема с символической формой в Symfony2. (2.7.0)Symfony 2. Значок CSRF недействителен

Действие:

public function registerProcessAction(Request $request){ 
    $form = $this->createForm(new RegistrationType(), new Registration()); 

    $form->handleRequest($request); 

    if ($form->isValid()) { 
     die('valid'); 
    } 
    else{ 
     die('invalid'); 
    } 
} 

И моя форма:

public function configureOptions(OptionsResolver $resolver) 
{ 
    $resolver->setDefaults(array(
     'data_class'  => 'My\Bundle\Entity\User' 
    )); 
} 

Когда я проверить форму, всегда показывают ту же ошибку:. "токен CSRF недействителен Пожалуйста попробуйте повторно отправить форму ". Я уверен, что вход скрыт в форме. Это вид:

<?php 
echo $view['form']->start($form); 
echo $view['form']->widget($form); 
echo $view['form']->end($form); 
?> 

Кто-нибудь может мне помочь?

Я проверил, чтобы отключить защиту CSRF, как это:

Действие:

$form = $this->createForm(new RegistrationType(), new Registration(), array('csrf_protection' => false)); 

Форма:

public function configureOptions(OptionsResolver $resolver) 
{ 
    $resolver->setDefaults(array(
     'data_class'  => 'My\Bundle\Entity\User', 
     'csrf_protection' => false 
    )); 
} 

Но другая ошибка появляется: Эта форма не должна содержать дополнительные поля. Поскольку скрытый ввод токена, он еще в форме, и я не знаю, чтобы удалить его.

Thankyou!

+0

Я не уверен, если вам просто не хватает echo $ view ['form'] -> rest ($ form); – DerStoffel

+0

Запуск 'git bisect' указывает пальцем на фиксацию, в которой я обновился с Symfony 2.7.1 до 2.7.2. –

ответ

0

У меня есть собственный поставщик аутентификации, как described here. В какой-то момент в методе Listen's handle() я вызывал $request->getSession()->migrate(), что вызывало проблему для меня. Удаление вызова для переноса сеанса решило проблему.

Интересно, если this was the commit нарушил мой прослушиватель аутентификации?

Смежные вопросы