2009-07-24 15 views
150

Cuando tengo una acción específica que no deseo verificar el token de autenticidad, ¿cómo le digo a Rails que omita comprobarlo?¿Cómo ignoro el token de autenticidad para acciones específicas en Rails?

+6

+1, por desgracia, usted ha votado negativamente por responder a su propia pregunta, lo cual es perfectamente legítimo. –

+15

eh. Lo puse aquí porque busqué por todas partes y tuve dificultades para encontrar una respuesta, pensé que podría ayudar a otras personas. Gracias por votarme nuevamente. – edebill

Respuesta

201

Para las acciones individuales, que puede hacer:

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

Para un controlador de todo, se puede hacer:

skip_before_action :verify_authenticity_token 

y rieles 3.x requiere:

skip_before_filter :verify_authenticity_token 
+0

thx para documentar esto – clyfe

+0

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

+29

Para rails 4 use 'skip_before_action: verify_authenticity_token', vea [API docs] (http://api.rubyonrails.org/classes/ActionController/RequestForgeryProtection/ClassMethods.html) – amoebe

23

En Rails4 utiliza skip_before_action con except o 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 
Cuestiones relacionadas