Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使跨站点请求伪造令牌在Rails中的寿命更长_Ruby On Rails_Csrf - Fatal编程技术网

Ruby on rails 使跨站点请求伪造令牌在Rails中的寿命更长

Ruby on rails 使跨站点请求伪造令牌在Rails中的寿命更长,ruby-on-rails,csrf,Ruby On Rails,Csrf,在我制作的应用程序中,我收到了很多这样的信息: 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_a

在我制作的应用程序中,我收到了很多这样的信息:

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),并且令牌过期了


有没有办法延长这些代币的寿命?

没有理由认为时间限制会导致此异常。当请求中接收到的伪造保护令牌与应该的不同时,会导致异常
ActionController::InvalidAuthenticationToken

以下是一些代码,您可以添加到JavaScript中,以添加正确的伪造保护令牌:

$.ajax({
  url: url,
  data: {
    authenticity_token: <%= form_authenticity_token.to_json %>,
    ...
  }
});
$.ajax({
url:url,
数据:{
真实性令牌:,
...
}
});

这样,您的代币将是正确的。

代币是否永远有效?否则,他们能活多久?你建议我在哪里添加这个(我不认为我在整个项目中有一行JavaScript),你说这个请求是通过AJAX实现的?否则,Rails中的表单帮助程序会自动为您放入正确的真实性令牌。Josh,这是通过AJAX实现的,但是使用Rails帮助程序,因此它具有正确的令牌。否则它将永远失败,而不是百分之一的失败。