Rails中的protect_from_forgery和verify_authenticity_token有什么区别?

问题描述 投票:0回答:1

我通常在我的API控制器中写skip_before_action :verify_authenticity_token,但我发现还有protect_from_forgery except :action选项。有什么区别,何时应该使用哪一个?

ruby-on-rails ruby-on-rails-5
1个回答
0
投票

[查看protect_from_forgery的代码,它是verify_authenticity_tokenverify_same_origin_request的包装。

def protect_from_forgery(options = {})
  options = options.reverse_merge(prepend: false)

  self.forgery_protection_strategy = protection_method_class(options[:with] || :null_session)
  self.request_forgery_protection_token ||= :authenticity_token
  before_action :verify_authenticity_token, options
  append_after_action :verify_same_origin_request
end

我对the docs的了解是,您使用protect_from_forgery在ApplicationController中打开CSRF,并使用skip_before_action :verify_authenticity_token在子类中有选择地将其关闭。

© www.soinside.com 2019 - 2024. All rights reserved.