2010-08-06 6 views
3

Voici l'affaire.Rails InvalidAuthenticityToken à des moments aléatoires

Notre application fonctionne et est utilisée par les auteurs pour envoyer du contenu pour le site Web. Le problème est, de temps en temps, nos écrivains reçoivent une erreur après avoir soumis le formulaire pour toute ressource sur le site. L'erreur après avoir vérifié les journaux de production était le bon vieux InvalidAuthenticityToken.

Problème est, ils ne changent pas le jeton, ils n'invalident pas le formulaire, ils ne font rien d'autre que d'écrire dans l'éditeur et cliquez sur soumettre! L'erreur semble être complètement aléatoire, parfois elle se produit, parfois non:/ Tout ce que je sais, c'est que cela se produit lors de l'édition ou de la création d'un item, donc des requêtes POST ou PUT, mais le problème est, Ce n'est pas sur une zone spécifique de l'application, il finit simplement par arriver de temps en temps partout dans nos formulaires.

Notre environnement est un HAProxy desservant un mongrel_cluster avec 20 mongrels exécutant notre application. La version de Rails est 2.3.8

Cela peut-il être un problème avec des sessions dans différents bâtards? Sinon, que puis-je faire pour arrêter ces erreurs aléatoires, ce qui fait que les auteurs perdent parfois beaucoup de temps à éditer un texte et simplement à le perdre à cause de la foutue erreur.

Toute aide vraiment appréciée.

+0

J'ai lu sur le même problème quelque part c'est peut-être un bug – Bohdan

Répondre

3

Le problème était vraiment plus simple que je ne l'aurais jamais imaginé. Le temporisateur de session a été réglé à 900 secondes et parfois les rédacteurs ont pris plus de temps que d'éditer un texte dans la même page, sans aucune autre navigation sur le site Web.

Cela a invalidé la session en raison du délai d'attente, puis lorsque le formulaire a finalement été soumis, la partie de session du jeton d'authenticité a été réinitialisée de sorte que l'erreur InvalidAuthenticityToken a été déclenchée.

+0

Je l'ai eu à des moments aléatoires aussi. Comment mettez-vous à jour ce minuteur de session? – johnnymire

+1

Cela est fait sur le fichier d'environnement de votre environnement, en utilisant le hachage config.action_controller.session – Draiken

Questions connexes