0

私が作成したアプリケーションでは、これらのメッセージがたくさん表示されます:

A ActionController::InvalidAuthenticityToken occurred in items#vote_up:
  ActionController::InvalidAuthenticityToken
  /var/lib/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/request_forgery_protection.rb:79:in `verify_authenticity_token'

これは、人々がそのページを更新することなく(ajaxを使用して)多くの時間をそのページに費やし、トークンの有効期限が切れるために発生していると思われます。

これらのトークンの寿命を延ばす方法はありますか?

4

1 に答える 1

2

時間制限がこの例外を引き起こしている理由はありません。例外ActionController::InvalidAuthenticityTokenは、リクエストで受け取った偽造保護トークンが本来あるべきものと異なる場合に発生します。

JavaScriptに追加して、正しい偽造防止トークンを追加できるコードを次に示します。

$.ajax({
  url: url,
  data: {
    authenticity_token: <%= form_authenticity_token.to_json %>,
    ...
  }
});

このようにして、トークンは正しくなります。

于 2010-02-13T00:20:30.743 に答える