在一个应用程序中,我发现我收到了很多这样的消息:
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)并且令牌过期。
有没有办法让这些代币延长寿命?
答案 0 :(得分:2)
时间限制没有理由导致此异常。当请求中收到的伪造保护令牌与应有的伪造保护令牌不同时,会导致异常ActionController::InvalidAuthenticityToken
。
以下是一些代码,您可以添加到JavaScript中以添加正确的伪造保护令牌:
$.ajax({
url: url,
data: {
authenticity_token: <%= form_authenticity_token.to_json %>,
...
}
});
这样,你的令牌就是正确的。