Como ignoro o token de autenticidade para ações específicas no Rails?

168

Quando tenho uma ação específica na qual não quero verificar o token de autenticidade, como digo ao Rails para ignorá-lo?

edebill
fonte

Respostas:

230

No Rails 4:

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

E Rails 3:

skip_before_filter :verify_authenticity_token

Para versões anteriores:

Para ações individuais, você pode:

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

Para um controlador inteiro, você pode fazer:

skip_before_action :verify_authenticity_token
edebill
fonte
para controlador específico e ação específica, use: skip_before_filter: confirm_authenticity_token,: only =>: my_unprotected_action. Eu vim aqui para encontrar a resposta para: é uma péssima ideia? Estou procurando fazer isso porque uma resposta ajax come minha sessão.
10133 Danny
9
Para os trilhos 5.2, use skip_forgery_protection. Consulte os documentos da API .
Aaron Breckenridge
27

No Rails4 você usa skip_before_actioncom exceptou 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
fonte