verify_authenticity_token尚未定义

时间:2016-08-31 22:49:16

标签: ruby-on-rails ruby-on-rails-5

Ruby版本2.2.4,Rails版本5.0.0.1。

我遇到了tutorial的一部分,你用[{1}}测试登录。我收到错误

  

ArgumentError(在process_action回调之前:尚未定义verify_authenticity_token)。

我在sessions_controller中使用了这段代码:

curl

有人知道答案吗?

4 个答案:

答案 0 :(得分:17)

检查ApplicationController是否有protect_from_forgery来电,如下所示:

class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
end

基本上调用protect_from_forgery会将verify_authenticity_token添加到before_filter列表中,您可以在其他控制器中跳过该列表。

有关详细信息,请参阅protect_from_forgery documentation

答案 1 :(得分:8)

升级到Rails 5后,我遇到了这个错误。我发现如果使用相同的方法名称多次调用<html> <body> <form id="form1" runat="server"> <asp:TextBox id="txtImagename1" TextMode="multiline" Columns="50" Rows="1" runat="server" /> </form> </body> </html> protected void Button1_Click(object sender, EventArgs e) { string text = Server.HtmlEncode(txtImagename1.Text); ... } ,则会引发此异常。

我的修复是添加参数skip_before_action,第二次调用raise: false

所以它看起来像这样:

skip_before_filter

答案 2 :(得分:0)

升级到Rails 5并部署到Heroku后,我遇到了此错误。我无法在开发中复制它。

API docs中,给出了示例

class ApplicationController < ActionController::Base
  protect_from_forgery unless: -> { request.format.json? }
end

对我来说,像上面那样添加unless: -> { request.format.json? }可以解决我的堆栈炸弹。 raise: false不幸的是没有。

答案 3 :(得分:0)

我通过设置修复了它: config.action_controller.default_protect_from_forgery = true 中的 config/application.rb