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?

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

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.