如何从rails表单中删除authenticity_token

时间:2011-02-22 06:45:12

标签: ruby-on-rails-3

我已经弄清楚如何禁用控制器中的authenticity_token但rails仍然在表单中创建了字段。如何关闭此功能,因为我发布表单的服务器需要一组非常具体的字段名称。

3 个答案:

答案 0 :(得分:16)

在3.2.x之后的rails中,您可以将参数传递给表单生成器,如另一个答案所示:

form_for @invoice, :url => external_url, :authenticity_token => false do |f|
  ...
<% end %>

在任何rails版本中,您可以在config / application.rb中全局禁用,如另一个答案:

config.action_controller.allow_forgery_protection = false

在rails 3.0.x中,您可以通过覆盖以下方法在控制器中禁用页面加载。不幸的是,似乎没有办法在表单级别执行此操作。

protected
  def protect_against_forgery?
    if ...
      # results in the meta tag being ommitted and no forms having authenticity token
      return false 
    else
      # default implementation based on global config
      return allow_forgery_protection 
    end
  end

答案 1 :(得分:3)

要在整个应用程序中禁用它,可以将此行添加到config / application.rb:

config.action_controller.allow_forgery_protection = false

答案 2 :(得分:1)

对于外部网址,您可以按以下方式转换每个表单:

<%= form_for @invoice, :url => external_url, :authenticity_token => false do |f|
  ...
<% end %>

来源:http://apidock.com/rails/ActionView/Helpers/FormHelper/form_for