Я скопировал какой-то старый код, который работал в compojure 1.1.18 и других старых библиотеках, но с использованием последних версий я не могу заставить его работать.Как использовать кольцевой анти-подделку/CSRF-токен с последней версией ring/compojure?
Вот мой minimal example code скопирована с the minimal example here, чтобы продемонстрировать, что с последним кольцом и compojure библиотек, я получаю сообщение об ошибке, когда я отправить HTTP POST
, даже с набором заголовка.
lein ring server
запустить его, а затем сделать
curl -X GET --cookie-jar cookies "http://localhost:3000/"
что приводит к чему-то вроде этого:
{"csrf-token":"7JnNbzx8BNG/kAeH4bz1jDdGc7zPC4TddDyiyPGX3jmpVilhyXJ7AOjfJgeQllGthFeVS/rgG4GpkUaF"}
Но когда я делаю это
curl -X POST -v --cookie cookies -F "[email protected]" --header "X-CSRF-Token: 7JnNbzx8BNG/kAeH4bz1jDdGc7zPC4TddDyiyPGX3jmpVilhyXJ7AOjfJgeQllGthFeVS/rgG4GpkUaF" http://localhost:3000/send
я <h1>Invalid anti-forgery token</h1>
Am Я делаю что-то неправильно ?
Код, который я заимствовал was intended to answer this question.
снято в темноте, но выходит из-под косых черт (в токене), используя обратную косую черту, имеет какое-то значение? – lispHK01
Спасибо! Джеймс Ривз/weavejester, автор compojure и [сторонник кольцевой анти-подделки сказал мне, что новые 'wrap-defaults' и' site-defaults' в пакете 'ring-defaults'] (https://github.com/ring-clojure/ring-anti-подделка/проблемы/10), который заменяет устаревшее пространство имен обработчика 'handler', автоматически требует токенов CSRF для HTTP' POST' и др. Таким образом, мой код генерирует токен дважды, и я проверяю неверный. Я работаю над исправлением ... – sventechie