symfony 1.4 deaktivieren der csrf-Schutz für ein Registrierungs-Formular?
Ich bin mit beiden sfDoctrineGuard und sfForkedDoctrineApply. Ich habe ein Modul geschrieben, erlaubt einem angemeldeten Benutzer zum erstellen einer Kind-user, die erbt ein paar von der übergeordneten Profil-Einstellungen. Es funktioniert Super, die Art wie es geschrieben ist, allerdings habe ich ausgeschaltet csrf-Schutz für die gesamte app (in den Einstellungen), um es zu bekommen arbeiten, weil wenn es eingeschaltet ist, ist es (zu Recht, möchte ich hinzufügen), erkennt ein csrf-Angriff. Also, ich brauche eine Möglichkeit, es zu deaktivieren, oder zumindest fangen und entfernen Sie die Validierung.
Habe ich versucht, viele Techniken, von denen keines gearbeitet haben. Inklusive:
$this->disableLocalCSRFProtection();
in der form. Problem ist, es ist ein benutzerdefiniertes Formular und die Eltern-config aufgerufen wird, ist die Injektion der csrf-Schutz.
Ich habe ein paar Lösungen, die ich denke, sind in die richtige Richtung: Symfony 1.4: Benutzerdefinierte Fehlermeldung für CSRF-in-Formulare aber Sie kümmern sich nicht um dieses spezielle problem Auftritt.
Vorschläge und Lösungen sind willkommen. Vielen Dank im Voraus.
- Wo machst du das
$this->disableLocalCSRFProtection();
nennen? InYourForm::configure()
? - Ja, habe ich, dass der Aufruf in der form config.
- "es ist ein benutzerdefiniertes Formular und die Eltern-config aufgerufen wird, ist die Injektion der csrf-Schutz" hast du eine Möglichkeit zum deaktivieren der csrf-Schutz in der übergeordneten form mit
disableLocalCSRFProtection()
? - Ich kann, aber dann würde er es abschalten, für alle nachfolgenden Formular Aufrufe (die übergeordneten Formen), in denen es benötigt wird. Zu tun, so würde ich es deaktivieren, in der Basis form-Klasse. Aber das gab mir nur eine Idee. Ich könnte in der Lage sein, um eine variable hinzuzufügen, die auf der Basis der form-Klasse, und übergeben Sie den Befehl deaktivieren im für Umstände, die es brauchen. Ich werde basteln mit, und lassen Sie wissen, ob es funktioniert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Basis sfForm Konstruktor wird konfiguriert, ob aktiviert ist und was der CSRFSecret.
In solchen Fällen, in denen die Deaktivierung der lokalen CSRF-Schutz über disableLocalCSRFProtection() nicht funktioniert, können Sie versuchen, die Formular-Instanz mit einer "falschen" CSRFSecret".
Beispiel:
Edit: (Der obige Vorschlag nicht für die poster)
Könnten Sie bitte versuchen, einfach in den Kommentaren des "csrf_secret" - Konfiguration in Ihrer Anwendung Einstellungen.yml. Nach der Kommentierung dieser Linie, vergessen Sie nicht, klar symfony-cache. Um zu überprüfen, dass CSRF-Schutz ist Global deaktiviert, Sie können überprüfen Sie den Wert von "sf_csrf_secret" Konfiguration wie folgt;
Dies sollte Ihnen ein boolean false, was bedeutet, in der Tat alle CSRF-Schutz deaktiviert ist.
$this->disableLocalCSRFProtection(); hat bei mir nicht funktioniert entweder.
Mir ist es gelungen, durch Einstellung der crsf validator erforderlich-option auf false direkt nach dem erstellen der form.