Ruby版本2.2.4,Rails版本5.0.0.1。
我遇到了tutorial的一部分,你用[{1}}测试登录。我收到错误
ArgumentError(在process_action回调之前:尚未定义verify_authenticity_token)。
我在sessions_controller中使用了这段代码:
curl
有人知道答案吗?
答案 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