Rails 3.2 - 禁用CSRF保护以执行控制器操作

时间:2014-04-29 19:12:51

标签: ruby-on-rails-3 controller action csrf

我有一个名为ProductsController的控制器,为了从.NET客户端应用程序进行PUT API调用,我创建了一个名为 set_status 的操作。我已经正确设置了所有设置,但在发送请求后,我收到“无法验证CSRF令牌真实性”错误。我的应用程序控制器中有以下内容用于CSRF保护:

protect_from_forgery

为了绕过CSRF保护,我已将以下内容添加到我的产品控制器中:

skip_before_filter :set_status

使用此更改进行测试后,仍然会收到相同的错误消息。根据我的理解,上面的代码行应该禁用Products控制器中 set_status 操作的CSRF保护,但它似乎没有工作。

有没有人知道为什么这可能不起作用?非常感谢你提前!

1 个答案:

答案 0 :(得分:22)

我明白了!这是我的代码:

skip_before_filter :verify_authenticity_token, :only => [:set_status]

我忘了 protect_from_forgery 语句创建了自己的方法。其中一种方法是verify_authenticity_token,因此它比我想象的要简单得多。之前我被困住了,因为我没有一个verify_authenticity_token方法,但我确实这样做了,因为它是自动生成的。