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.