2014-04-29 23 views
10

Ho un controller denominato ProductsController e ho creato un'azione denominata set_status allo scopo di chiamare le API PUT da un'applicazione client .NET. Ho impostato tutto correttamente, ma dopo aver inviato una richiesta, ricevo un errore "Impossibile verificare l'autenticità del token CSRF". Ho il seguente nel mio controller Domanda di protezione CSRF:Rails 3.2 - Disabilita CSRF Protection per l'azione del controller

protect_from_forgery 

Al fine di bypassare la protezione CSRF, ho aggiunto il seguente al mio controller Prodotti:

skip_before_filter :set_status 

Dopo aver testato con questo cambiamento , Ho ancora lo stesso messaggio di errore. Sulla base della mia comprensione, la riga di codice sopra dovrebbe disabilitare la protezione CSRF per l'azione set_status nel controller Prodotti, ma non sembra funzionare.

Qualcuno ha qualche idea sul perché questo potrebbe non funzionare? Grazie mille in anticipo!

risposta

18

L'ho capito! Qui è il mio codice:

skip_before_filter :verify_authenticity_token, :only => [:set_status] 

Ho dimenticato che il protect_from_forgery istruzione crea metodi della sua propria. Uno di questi metodi è verify_authenticity_token, quindi è stato molto più semplice di quanto pensassi. Ero bloccato prima perché non avevo un metodo verify_authenticity_token, ma in effetti l'ho fatto perché è stato generato automaticamente.

+1

Nelle versioni più recenti dei binari utilizzare 'skip_before_action' invece di' skip_before_filter'. (skip_before_filter è stato deprecato) –