【发布时间】:2023-03-23 22:30:01
【问题描述】:
我有一个 Rails 应用程序,它为 iPhone 应用程序提供一些 API。 我希望能够简单地发布资源而不介意获得正确的 CSRF 令牌。 我尝试了一些在 stackoverflow 中看到的方法,但它们似乎不再适用于 rails 3。
谢谢你帮助我。
【问题讨论】:
标签: ruby-on-rails-3 csrf
我有一个 Rails 应用程序,它为 iPhone 应用程序提供一些 API。 我希望能够简单地发布资源而不介意获得正确的 CSRF 令牌。 我尝试了一些在 stackoverflow 中看到的方法,但它们似乎不再适用于 rails 3。
谢谢你帮助我。
【问题讨论】:
标签: ruby-on-rails-3 csrf
在您要禁用 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
【讨论】:
ApplicationController 中应该包含的内容。 Mike Lewis 在下面的回复 (skip_before_filter :verify_authenticity_token) 是如何在每个控制器的基础上禁用它,假设控制器继承自 ApplicationController。
使用 Rails 4,您现在可以选择使用 skip_before_action 而不是 skip_before_filter。
# Works in Rails 4 and 5
skip_before_action :verify_authenticity_token
或
# Works in Rails 3 and 4 (deprecated in Rails 4 and removed in Rails 5)
skip_before_filter :verify_authenticity_token
【讨论】: