私はFOSユーザバンドルでSymfony 3.1を使用しています。Symfony 3.1 CSRFトークンがログインフォームに無効です
は私がログインのための「CSRF無効なトークン」のメッセージは、私が第一の要求で、私はトークンを取得することを気づいた(シークレットモードで)私がログイン初めて
を形成し得ます。それから私はページをリフレッシュし、別のページを取得します。それ以来、私は同じトークンを取得します(そして正しく動作します)。例:
1st request: maJl7bBRR0iuOX4A96cOxrsLdklBIxz3mCP7fSMGqQY
2nd request: q21SVH98tbMLeRIypv2aTn0xBDXJ1khrcL8fIMOU4Y8
3rd request: q21SVH98tbMLeRIypv2aTn0xBDXJ1khrcL8fIMOU4Y8
4th request: q21SVH98tbMLeRIypv2aTn0xBDXJ1khrcL8fIMOU4Y8
私は2回同じテストを行いました。それは最初に失敗した後
<input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}">
:フォームでCSRFの入力は次のように生成され
Cache-Control:no-cache
:理由ヘッダのブラウザのキャッシュの問題ではないようです
時間は、すべてのものは、私は、検証にので、私は失敗している疑いがあるCSRFトークンの私が初めてログインに失敗していないしたい
(第二CSRFトークンが正常に動作します)OKになりbecau私が上で述べたことのse。 CSRF保護の削除は解決策ではありません。
ありがとうございます!
UPDATE
私は問題ではなく、解決策を見つけました。プロジェクトはMySQLにセッションデータを保存します。初めてアクセスするとデータベースにデータが挿入されるのではなく、2番目に挿入されます。データは、$ _SESSIONに存在しているが、それはMySQLの中で最初に保存されていないとして、CSRFトークンが失われた。(私はこれが、このHow to show the last queries executed on MySQL?にアプリのおかげで作られたクエリをロギングました)。ファイルにセッションを保存する
が正常に動作します。これは解決策ではありません。異なるサーバーに複数のアプリケーションインスタンスが存在するためです。