Ich habe alten Code kopiert, der in Compojure 1.1.18 und anderen alten Bibliotheken funktioniert hat, aber mit den neuesten Versionen kann ich es nicht zum Laufen bringen.Wie kann ich Ring-Anti-Fälschung/CSRF-Token mit der neuesten Version Ring/Compojure verwenden?
Hier ist mein minimal example code von the minimal example here kopiert zu zeigen, dass mit dem neuesten Ring und compojure Bibliotheken, ich erhalte eine Fehlermeldung, wenn ich einen http POST
, auch mit dem Kopfsatz senden.
lein ring server
es zu starten, dann
curl -X GET --cookie-jar cookies "http://localhost:3000/"
, die wie folgt in etwas ergibt:
{"csrf-token":"7JnNbzx8BNG/kAeH4bz1jDdGc7zPC4TddDyiyPGX3jmpVilhyXJ7AOjfJgeQllGthFeVS/rgG4GpkUaF"}
Aber wenn ich tun, um diese
curl -X POST -v --cookie cookies -F "[email protected]" --header "X-CSRF-Token: 7JnNbzx8BNG/kAeH4bz1jDdGc7zPC4TddDyiyPGX3jmpVilhyXJ7AOjfJgeQllGthFeVS/rgG4GpkUaF" http://localhost:3000/send
ich <h1>Invalid anti-forgery token</h1>
Am Ich mache etwas falsch ?
Der Code ich ausgeliehen was intended to answer this question.
im Dunkeln gedreht, aber die Vorwärts Schrägstriche (im Token) mit Backslashes machen einen Unterschied machen? – lispHK01
Danke! James Reeves/webenjester, Autor von compojure und [maintainer von ring anti-forgery haben mir mitgeteilt, dass die neuen 'wrap-defaults' und' site-defaults' im 'ring-defaults' Paket (https://github.com/ring-clojure/ring-anti-forgery/issues/10), das den veralteten '' handler''-Namespace ersetzt, benötigt automatisch CSRF-Tokens für HTTP 'POST' et al. Also generiert mein Code das Token zweimal und ich verifiziere gegen das falsche. Ich arbeite an einer Reparatur ... – sventechie