Как игнорировать токен аутентификации для определенных действий в Rails?

168

Когда у меня есть конкретное действие, на котором я не хочу проверять токен аутентификации, как я могу сказать Rails пропустить его проверку?

edebill
источник

Ответы:

231

В Rails 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
edebill
источник
для конкретного контроллера и конкретного действия используйте: skip_before_filter: verify_authenticity_token,: only =>: my_unprotected_action. Я пришел сюда, чтобы найти ответ: это ужасная идея? Я хочу сделать это, потому что ответ Ajax съедает мою сессию.
Дэнни
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
Epigene
источник