2014-04-23 11 views
0

Salut im développer une application avec symfony2 et AngularJS. J'ai un formulaire que j'envoie avec le service $ http par la poste. Exemple le formulaire de connexion et le formulaire d'inscription.jeton csrf symfony2 invalide sur demande ajax

L'erreur est que le jeton CSRF classique est invalide et se produit lors de la nouvelle soumission du formulaire.

La première fois que le formulaire soumettre le processus va bien, l'utilisateur se connecter ou s'inscrire; mais si je me déconnecte et que j'essaie de renvoyer le formulaire avec les mêmes données pour me reconnecter, j'obtiens l'erreur du jeton csrf invalide.

Le dans essayer de régénérer le jeton si la forme de son submited avec:

$ this-> get ('form.csrf_provider') -> generateCsrfToken ('Authentifier'); Et remplacez-le sur la vue à la prochaine fois que le formulaire aura un nouveau jeton à envoyer, mais j'obtiens la même erreur.

Qu'est-ce qui ne va pas?

+0

Avez-vous besoin de re-rendre le formulaire pour chaque demande? – Kiksy

+0

non, l'idée est que la forme est toujours là ou a montré ou caché dans la connexion div enveloppé du menu utilisateur, il va cacher ou afficher en fonction de l'état connecté de l'utilisateur – bitgandtter

+0

Avez-vous vérifié que le jeton CSRF change vraiment entre les demandes? – sebbo

Répondre

0

Je sais que vous avez posé cette question il y a longtemps, mais aujourd'hui, j'ai fait face au même problème, la solution était assez simple. Si vous restituez votre formulaire avec un autre noeud, assurez-vous que form_start se trouve dans le même noeud que form_end. Dans mon cas, il ressemblait à ceci:

<div> 
{{form_start(form)}} 
... some form inputs 
</div> 
{{form_end(form)}} 

Comme vous le savez sans doute que le form_end rend le jeton (dans le dernier Symfony) et en conséquence, le jeton était en dehors de la forme. Comme il arrive quand vous essayez de rendre le formulaire, je suppose que c'est parce que vous avez un autre modèle pour le formulaire de rendu (par exemple avec des erreurs) alors assurez-vous que votre hiérarchie HTML est valide.

Espérons que cela aidera quelqu'un dans le futur. À votre santé!