3

form_authenticity_token が params[:authenticity_token] と一致しないのはどのような状況ですか?

検証されていないリクエストがアプリに送られてくるのを確認していたので、form_tag をオーバーライドしてデバッグ情報を出力しました。

form_auth_token:    #{form_authenticity_token.inspect}
session_csrf_token: #{session['_csrf_token'].inspect}
params:             #{params.inspect}

そして、セッションが form_auth_token に一致する適切なトークンを持っていることを示す出力を得ましたが、送信されたパラメータはauthenticity_tokenと一致しませんでした:

form_auth_token:    "gckttsVeq2XvTBwQX3BaInWCivIhvR/mYBWjs119eb8="
session_csrf_token: "gckttsVeq2XvTBwQX3BaInWCivIhvR/mYBWjs119eb8="
params:             {"utf8"=>"✓", "authenticity_token"=>"+5IINl7vEh1jJJwP+RiXXws+4kEwM3fpJsCOn+gZ0AA=" ...

定義上、params[:authenticity_token] は form_authenticity_token と同じになると思いました。

  1. これを間違った方法でデバッグしていますか?
  2. 何が原因でしょうか?
4

1 に答える 1

0

いくつかの簡単な提案: Rails jquery ヘルパーを使用している場合、Rails は POST 要求の HTML ドキュメントの先頭から csrf-token メタ タグ値を自動的に追加します。<head>HTMLドキュメントのタグの値が一致するかどうかを確認します。

于 2013-10-06T17:44:28.453 に答える