【问题标题】:Rails 3.0.3 and InvalidAuthenticityTokenRails 3.0.3 和 InvalidAuthenticityToken
【发布时间】:2011-02-15 11:49:35
【问题描述】:

我只有一些用户收到了 InvalidAuthenticityToken 异常。当我检查错误时,我可以看到请求已将"\r\n" 添加到authentity_token 参数(即:"authenticity_token"=>"YfYr7bzy1MFzNHPvrSOIdrYuuAG3SHZy/OBJyV3yUSg=\r\n")。

除了IE7之外,我对浏览器一无所知。

我感觉是他们的防火墙对请求做了一些事情。我认为一个聪明的解决方案是创建一个 Rack 中间件,如果存在换行符,它会删除它们。谁能告诉我如何做到这一点? (我没有机架经验)。

问候,

雅各布

【问题讨论】:

  • 我没有答案,但我以前读过有关 IE 和真实性令牌的一般问题。在您在这里得到答案之前,我建议您进行更多的网络和邮件列表搜索。
  • 好的 - 感谢您的提示。除了寻找答案,我什么也没做,但出于某种原因,我什么也没找到。

标签: ruby-on-rails ruby-on-rails-3 rack middleware


【解决方案1】:

我进行了调查,但找不到解决方案。它不是 IE 或 IE7。我最终制作了以下中间件:

class AuthenticityTokenFix
  def initialize(app)
    @app=app
  end

  def call(env)
    if env["rack.request.form_hash"] && env["rack.request.form_hash"]["authenticity_token"]
      env["rack.request.form_hash"]["authenticity_token"]=env["rack.request.form_hash"]["authenticity_token"].gsub("\r\n",'')
    end
    @app.call(env)
  end
end

这解决了问题。

【讨论】:

    猜你喜欢
    • 2018-11-02
    • 1970-01-01
    • 2014-02-10
    • 2018-11-27
    • 2019-06-12
    • 2015-11-15
    • 1970-01-01
    • 2015-11-23
    • 2017-06-22
    相关资源
    最近更新 更多