Jak zignorować token autentyczności dla określonych akcji w Railsach?

168

Kiedy mam określoną akcję, na której nie chcę sprawdzać tokena autentyczności, jak mam powiedzieć Railsom, aby pominąć sprawdzanie tego?

edebill
źródło

Odpowiedzi:

230

W Rails 4:

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

I szyny 3:

skip_before_filter :verify_authenticity_token

W przypadku poprzednich wersji:

W przypadku działań indywidualnych możesz wykonać:

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

W przypadku całego kontrolera możesz:

skip_before_action :verify_authenticity_token
edebill
źródło
dla konkretnego kontrolera i określonej akcji użyj: skip_before_filter: verify_authenticity_token,: only =>: my_unprotected_action. Przybyłem tutaj, aby znaleźć odpowiedź na pytanie: czy to okropny pomysł? Chcę to zrobić, ponieważ odpowiedź Ajax zjada moją sesję.
Danny,
9
W przypadku szyn 5.2 użyj skip_forgery_protection. Zobacz dokumentację API .
Aaron Breckenridge
27

W Rails4 używasz skip_before_actionz exceptlub only.

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
Epigene
źródło