¿Cómo ignoro el token de autenticidad para acciones específicas en Rails?


168

Cuando tengo una acción específica en la que no quiero verificar el token de autenticidad, ¿cómo le digo a Rails que omita la verificación?

Respuestas:


230

En Rails 4:

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

Y Rails 3:

skip_before_filter :verify_authenticity_token

Para versiones anteriores:

Para acciones individuales, puede hacer:

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

Para un controlador completo, puede hacer:

skip_before_action :verify_authenticity_token

para un controlador específico y una acción específica, use: skip_before_filter: generate_authenticity_token,: only =>: my_unprotected_action. Vine aquí para encontrar la respuesta a: ¿es una idea terrible? Estoy buscando hacer esto porque una respuesta ajax se come mi sesión.
Danny

9
Para rieles 5.2, use skip_forgery_protection. Ver documentos de API .
Aaron Breckenridge

27

En Rails4 usas skip_before_actioncon excepto 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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.