Comment puis-je vérifier si l'fournis jeton CSRF est invalide dans Symfony2?

J'ai créé un formulaire Symfony2 et lié à la Demande. J'ai besoin de faire en sorte que le jeton CSRF est valide/invalide avant de procéder avec le reste de la forme.

$form['_token']->isValid() jette OutOfBoundsException avec le message "Enfant _token n'existe pas."

Je peux toujours vérifier que le rendu de formulaire contient _token champ. Dans le cas où CSRF est invalide, $form->isValid() renvoie la valeur false.

Ce qui me manque ici?


Mise à jour 1:

Contrôleur (partielle):

private function buildTestForm() {
    $form = $this->createFormBuilder()
            ->add('name','text')
            ->getForm();
    return $form;
}

/**
 * @Route("/test/show_form", name="test.form.show")
 * @Method("GET")
 */
public function showFormTest()
{
    $form = $this->buildTestForm();
    return $this->render('TestBundle::form_test.html.twig', array('form' => $form->createView()));
}

/**
 * @Route("/test/submit_form", name="test.form.submit")
 * @Method("POST")
 */
public function formTest()
{
    $form = $this->buildTestForm();
    $form->bind($this->getRequest());
    if ($form['_token']->isValid()) {
        return new Response('_token is valid');
    } else {
        return new Response('_token is invalid');
    }
}

Modèle

{# Twig template #}
<form action="{{ path('test.form.submit') }}" method="post" {{ form_enctype(form) }}>
    {{ form_widget(form) }}
    <input type="submit" name="go" value="Test Form" />
</form>
il vous manque au moins sous la forme de code.
vrai - maintenant, ajout de code pour reproduire le problème.
Jeton CSRF la validation se fait automatiquement symfony.com/doc/current/book/forms.html#csrf-protection
oui, je suis conscient de cela. Le problème est que j'ai besoin de réagir différemment dans le cas où _token est pas valide. C'est pourquoi j'ai besoin de vérifier explicitement.

OriginalL'auteur Ville Mattila | 2013-02-23