Deaktivieren Sie den CSRF-Token in Schienen 3


105

Ich habe eine Rails-App, die einige APIs für eine iPhone-Anwendung bereitstellt. Ich möchte in der Lage sein, einfach auf einer Ressource zu posten, ohne darauf zu achten, das richtige CSRF-Token zu erhalten. Ich habe einige Methoden ausprobiert, die ich hier im Stackoverflow sehe, aber es scheint, dass sie auf Schienen 3 nicht mehr funktionieren.

Danke, dass du mir geholfen hast.

Antworten:


175

In der Steuerung, in der Sie CSRF deaktivieren möchten, wird Folgendes überprüft:

skip_before_action :verify_authenticity_token

Oder um es für alles außer ein paar Methoden zu deaktivieren:

skip_before_action :verify_authenticity_token, :except => [:update, :create]

Oder um nur bestimmte Methoden zu deaktivieren:

skip_before_action :verify_authenticity_token, :only => [:custom_auth, :update]

Weitere Informationen: RoR Request Forgery Protection


1
Dies ist die richtige Antwort für Apps, die eine Mischung aus regulären, über den Browser zugänglichen Formularen und API-Endpunkten enthalten. Die Antwort von Markus Proske wäre richtig, wenn Sie absolut sicher wären, dass Ihre App keine über den Browser zugänglichen Formulare enthält.
— Asfand Qazi

Wohin geht das genau? Was ist, wenn der Controller Teil eines Edelsteins ist?
— Werfen Sie Konto weg

Darf ich Sie fragen, ob Sie diese sehr ähnliche Frage beantworten können? stackoverflow.com/questions/50159847/…

105

In Rails3 können Sie das csrf-Token in Ihrem Controller für bestimmte Methoden deaktivieren:

protect_from_forgery :except => :create 

12
Beachten Sie beim Lesen, dass dies der Fall sein sollte ApplicationController. Die Antwort von Mike Lewis unten ( skip_before_filter :verify_authenticity_token) lautet, wie es auf Controller-Basis deaktiviert werden kann, vorausgesetzt, der Controller erbt von ApplicationController.
— NudeCanalTroll

Dies scheint unsicher zu sein stackoverflow.com/questions/10676018/… . Was denken Sie? ist es?
— Websites

@NudeCanalTroll meinst du das in den Controller zu legen, wo ich will, dass es nicht funktioniert?
— BlackDivine

Darf ich Sie fragen, ob Sie diese sehr ähnliche Frage beantworten können? stackoverflow.com/questions/50159847/…

32

Mit Rails 4 haben Sie jetzt die Möglichkeit, skip_before_actionanstelle von zu schreiben skip_before_filter.

# Works in Rails 4 and 5
skip_before_action :verify_authenticity_token

oder

# Works in Rails 3 and 4 (deprecated in Rails 4 and removed in Rails 5)
skip_before_filter :verify_authenticity_token

1
Was ist der Unterschied?
— Adam D. Ruppe

Darf ich Sie fragen, ob Sie diese sehr ähnliche Frage beantworten können? stackoverflow.com/questions/50159847/…

John Sam, wenn ich Zeit habe, werde ich versuchen, mich darum zu kümmern.
— Jason 328
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.