5

protect_from_forgeryデフォルトでapplication_controller.rbにあるRails 3.0.2を使用しています。

をトリガーしたかったのInvalidAuthenticityTokenです。
これを行うために、この JavaScript をページに追加しました。

$('input[name=authenticity_token]').val('aaa')

Firebug で DOM をチェックすると、authenticity_token隠しフィールドが正しく更新されていることがわかります。

フォームを送信してサーバーからのログを確認すると、相対パラメーターが正しく「aaa」に設定されていることがわかります。InvalidAuthenticityTokenリクエストが正しかったので、リクエストが処理されるまでしばらく時間がかかると思います。

これはどのように可能ですか?

4

2 に答える 2

12

認証トークン/csrf の動作に関するドキュメントは古くなっています。これらのInvalidAuthenticityToken場合、例外はスローされなくなり、代わりにセッションがリセットされます。これを別の方法 (または古い方法) で処理したい場合はhandle_unverified_request、コントローラーで独自の動作を定義できます。

于 2011-05-23T04:33:12.770 に答える
1

また、フォームが含まれている html ページのメタ タグにある Authenticity トークンをリセットする必要があると思います (そこに <%= csrf_meta_tag %> があると仮定しています)。Rails は、フォーム内のトークン (上記の JavaScript で変更したもの) または HTML ページのメタ タグ内のトークンのいずれかが Rails の期待される認証トークンと一致するかどうかをチェックし、それらのいずれかが一致する場合、InvalidAuthenticityToken は無効になります。トリガーされません....

于 2012-04-02T23:32:15.207 に答える