2014-04-29 11 views
10

Ich habe einen Controller namens ProductsController, und ich habe eine Aktion mit dem Namen set_status für den Zweck der PUT API-Aufrufe von einer .NET-Client-Anwendung erstellt. Ich habe alles richtig eingerichtet, aber nach dem Senden einer Anfrage erhalte ich den Fehler "Kann CSRF-Token-Authentizität nicht überprüfen". Ich habe folgende in meiner Anwendung Controller für CSRF-Schutz:Rails 3.2 - CSRF-Schutz für Controller-Aktion deaktivieren

protect_from_forgery 

Um die CSRF-Schutz zu umgehen, habe ich folgendes meine Produkte Controller hinzugefügt:

skip_before_filter :set_status 

Nach dieser Änderung testen , Bekomme ich immer noch dieselbe Fehlermeldung. Basierend auf meinem Verständnis sollte die obige Codezeile den CSRF-Schutz für die set_status Aktion im Produkt-Controller deaktivieren, aber es scheint nicht zu funktionieren.

Hat jemand einen Einblick, warum das nicht funktioniert? Vielen Dank im Voraus!

Antwort

18

Ich habe es herausgefunden! Hier ist mein Code:

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

Ich habe vergessen, dass die protect_from_forgery Anweisung Methoden ihrer eigenen schafft. Eine dieser Methoden ist verify_authenticity_token, und so war es viel einfacher als ich dachte. Ich steckte vorher fest, weil ich keine verify_authenticity_token-Methode hatte, aber ich tat es tatsächlich, weil sie automatisch generiert wurde.

+1

In neueren Versionen von Schienen verwenden Sie 'skip_before_action' anstelle von' skip_before_filter'. (skip_before_filter wurde eingestellt) –