2009-07-24 10 views
150

Quando ho un'azione specifica su cui non voglio controllare il token di autenticità, come faccio a dire a Rails di ignorarlo?Come ignoro il token di autenticità per azioni specifiche in Rails?

+6

+1, purtroppo è stato downvoted per rispondere alla propria domanda, che è perfettamente legittimo. –

+15

eh. L'ho messo qui perché ho cercato dappertutto e ho avuto difficoltà a trovare una risposta - ho pensato che potesse aiutare altre persone. Grazie per avermi votato. – edebill

risposta

201

Per le azioni individuali, si può fare:

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

Per un intero controllore, si può fare:

skip_before_action :verify_authenticity_token 

E Rails 3.x richiede:

skip_before_filter :verify_authenticity_token 
+0

thx per documentare questo – clyfe

+0

per controller specifici e azioni specifiche, utilizzare: skip_before_filter: verify_authenticity_token,: only =>: my_unprotected_action. Sono venuto qui per trovare la risposta a: è un'idea terribile? Sto cercando di farlo perché una risposta ajax mangia la mia sessione. – Danny

+29

Per le rotaie 4 usa 'skip_before_action: verify_authenticity_token', vedi [documenti API] (http://api.rubyonrails.org/classes/ActionController/RequestForgeryProtection/ClassMethods.html) – amoebe

23

In Rails4 si utilizza 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 
Problemi correlati