如何忽略Rails中特定操作的真实性令牌?


168

当我有不想检查真实性令牌的特定操作时,如何告诉Rails跳过对其进行检查?

Answers:


230

在Rails 4中:

skip_before_action :verify_authenticity_token, except: [:create, :update, :destroy]

和Rails 3:

skip_before_filter :verify_authenticity_token

对于以前的版本:

对于单个操作,您可以执行以下操作:

protect_from_forgery :only => [:update, :destroy, :create]
#or
protect_from_forgery :except => [:update, :destroy, :create]

对于整个控制器,您可以执行以下操作:

skip_before_action :verify_authenticity_token

对于特定的控制器和特定的操作,请使用:skip_before_filter:verify_authenticity_token,:only =>:my_unprotected_action。我来到这里是为了找到答案:这是一个糟糕的主意吗?我希望这样做是因为ajax响应占用了我的会话。
Danny

9
对于5.2,请使用skip_forgery_protection。请参阅API文档
亚伦·布雷肯里奇

27

Rails4您使用skip_before_actionexceptonly

class UsersController < ApplicationController
  skip_before_action :verify_authenticity_token, only: [:create]
  skip_before_action :some_custom_action, except: [:new]

  def new
    # code
  end

  def create
    # code
  end

  protected
  def some_custom_action
    # code
  end
end
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.