Ruby on rails 3 关闭rails 3中的CSRF令牌

Ruby on rails 3 关闭rails 3中的CSRF令牌,ruby-on-rails-3,csrf,Ruby On Rails 3,Csrf,我有一个rails应用程序,为iPhone应用程序提供一些API。 我希望能够简单地发布一个资源,而不必考虑获取正确的CSRF令牌。 我尝试了一些在stackoverflow中看到的方法,但它们似乎不再适用于Rails3 谢谢您的帮助。在要禁用CSRF的控制器中,检查: skip_before_action :verify_authenticity_token 或者禁用除少数方法之外的所有方法: skip_before_action :verify_authenticity_token, :e

我有一个rails应用程序,为iPhone应用程序提供一些API。 我希望能够简单地发布一个资源,而不必考虑获取正确的CSRF令牌。 我尝试了一些在stackoverflow中看到的方法,但它们似乎不再适用于Rails3


谢谢您的帮助。

在要禁用CSRF的控制器中,检查:

skip_before_action :verify_authenticity_token
或者禁用除少数方法之外的所有方法:

skip_before_action :verify_authenticity_token, :except => [:update, :create]
或仅禁用指定的方法:

skip_before_action :verify_authenticity_token, :only => [:custom_auth, :update]

更多信息:

在Rails3中,您可以针对特定方法禁用控制器中的csrf令牌:

protect_from_forgery :except => :create 

使用Rails 4,您现在可以选择在
skip\u before\u action
中写入,而不是在
skip\u before\u filter
中写入

# Works in Rails 4 and 5
skip_before_action :verify_authenticity_token


对于正在阅读的任何人,请注意这是
ApplicationController
中应该包含的内容。Mike Lewis在下面的回答(
skip_before_filter:verify_authenticity_token
)是如何基于每个控制器禁用它,假设控制器继承自
ApplicationController
。这似乎是不安全的。你怎么认为?是吗?@NudeCanatroll你的意思是把它放在我想要的控制器里,它不会工作吗?我可以问你是否能回答这个非常类似的问题吗?对于混合了常规浏览器可访问表单和API端点的应用程序,这是正确的答案。如果你绝对确定你的应用程序中不会有任何可通过浏览器访问的表单,那么Markus Proske的回答是正确的。这到底是怎么回事?如果控制器是某个gem的一部分呢?我可以问你是否可以回答这个非常类似的问题吗?有什么不同?我可以问你是否能回答这个非常相似的问题吗?约翰·萨姆,我有时间的时候会设法去做的。
# Works in Rails 3 and 4 (deprecated in Rails 4 and removed in Rails 5)
skip_before_filter :verify_authenticity_token