Як я ігнорую марку автентичності для конкретних дій у Rails?


168

Коли у мене є певна дія, яку я не хочу перевіряти маркер автентичності, як я можу сказати Rails пропустити перевірку?

Відповіді:


230

У рейках 4:

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

І рейки 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 Managed. Я прийшов сюди, щоб знайти відповідь на: чи це жахлива ідея? Я хочу це зробити, тому що відповідь на аякс їсть мій сеанс.
Денні

9
Для рейок 5.2 використовуйте skip_forgery_protection. Див. Документи API .
Аарон Брекенрідж

27

У Rails4 ви використовуєте skip_before_actionз exceptабо 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.