Заставить токен подделки межсайтовых запросов дольше жить в Rails - PullRequest
0 голосов
/ 13 февраля 2010

В приложении, которое я создаю, я получаю много таких сообщений:

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), и токены истекают.

Есть ли способ заставить эти токены жить дольше?

1 Ответ

2 голосов
/ 13 февраля 2010

Нет причин, по которым ограничение по времени могло бы вызвать это исключение. Исключение ActionController::InvalidAuthenticityToken возникает, когда полученный в запросе токен защиты от подделки отличается от того, каким он должен быть.

Вот код, который вы можете добавить в свой JavaScript для добавления в правильный токен защиты от подделки:

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

Таким образом, ваш токен будет верным.

...