使跨站请求伪造令牌在 Rails 中存活更长时间

发布于 2024-08-22 03:46:46 字数 381 浏览 5 评论 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)并且令牌过期了。

有没有办法让这些代币寿命更长?

In an application I make I'm getting lots of these messages:

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'

which I suspect it's happening because people spend a lot of time on that page without ever refreshing it (it uses ajax) and the tokens expire.

Is there a way to make those tokens live longer?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

沙沙粒小 2024-08-29 03:46:46

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

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

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

这样,您的令牌将是正确的。

There is no reason why a time limit would be causing this exception. The exception ActionController::InvalidAuthenticityToken is caused when the forgery protection token received in the request is different from what it should be.

Here is some code that you can add to your JavaScript to add in the correct forgery protection token:

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

This way, your token will be correct.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文