プロダクションサーバーは、数か月間無効な認証トークンエラーを生成しています。エラーは、ほとんどすべてのフォーム送信(PUT | POST | DELETE)要求で生成されます。場合によってはエラーが発生することもありますが、時々エラーが発生することもあります。彼らがなぜ起こるかに関しては、韻や理由がないようです。エラー自体は頻繁には発生しませんが、それは私たちの心配です。以下に、このエラーの原因となる典型的なフォームの例を示します。ランダムな無効な本物のトークンエラーのデバッグ
<form class="button_to" method="post" action="/lesson_progress_trackers/333">
<input type="hidden" name="_method" value="patch">
<input class="finish-lesson-button" type="submit" value="Done!">
<input type="hidden" name="authenticity_token" value="Qd3FsJZY2UXR9vahuFmaY5rrqA+J5xzGpl4cGI2Vwerx8PZPQtDMugz6oqoe3iviC+/U5zTYPdeX3apwbap09E==">
<input type="hidden" name="completed" value="true">
</form>
これまでに私が発見したことがあります。
- Turbolinks 2.5.3を使用しています(これは1年以上経っていません)。
- 無効なトークンエラーのすべてのケースで、ユーザーは真正性トークンをサーバーに渡しましたが、無効になったばかりです。
- 現在、当社のアプリケーションコントローラでは
protect_from_forgery with: :exception
を使用しています。 - 数か月前に多数の新しいコードを生産に投入したときにエラーが発生し始めました。この新しいコードは何百ものファイルに及んでいますが、これまでのところ、この問題に関連するコードでは何も見つかりませんでした。
- このエラーは、どのブラウザやデバイスで発生する可能性があります。
- トラフィックの増加と無効な認証トークンの間に相関はありません。
- ユーザーはどの国からでも参加できます。
- これらは、これらの問題が発生しているボットではありません。私たちは、同僚がこのエラーを経験することさえできましたが、彼らはそれを作り出すために何をしたのか思い出すことはできません。
- 期待されていない動作の場合、ユーザーは通常の動作を行います。彼らは意図したようにアプリを使用しています。私は彼らのクリックを見て、行動履歴を記録してこれを結論づけました。
最終的に私はこれを解決する方法を理解したいと思います。私の最初のステップは、エラーを正常に再現することですが、私はそれを行うことすらできません。私の質問はこれです:私は何が原因であるかを理解するために私を得るために私は何ができますか?私はオプションが不足しています。ありがとう!
はい、私はそれをしました。これは実際のユーザーに発生しています。これらはボットではありません。私が発見したパターンは、典型的なユーザーの行動です。彼らがしていることに何も異常はない。私はこれが期待される行動だと言っても構わない。これがとても恐ろしい理由です。 – jason328
何かが期限切れになるのを排除できますか?クッキーはちょうど1つのことです、それは時間に関連した比較、サーバーでの間違った時間、特定の時間などを期待するデータベースフィールドかもしれません。 – Smar
私はそうは思わない?あなたの質問を少しはっきりさせることができますか? – jason328