Wie LOCKE einen Authentifizierten Django-App?
Habe ich ein paar APIs, die ich gerne testen möchte mit cURL. Ich habe versucht zu tun, ein zu BEKOMMEN, wie folgt:
curl --user username:password --request GET http://my_domain/get_result/52d6428f3ea9a008358ad2d8/
Auf dem server, es zeigte eine '302' (was bedeutet, dass die Umleitung, richtig?). Ich vermute, es umgeleitet, um den "login/" - Seite.
Was ist der richtige Weg, um dies getan?
Bearbeiten: ich habe versucht:
curl -c cookies.txt -b cookies.txt -L -d @login_form.txt http://my_domain/login/
wo login_form.txt enthält "username=username&Passwort=Passwort&this_is_the_login_form=1". Funktioniert nicht. Keine cookies.txt Dateien erzeugt. Und kein login passiert. Können Sie mir sagen, wie Sie erreichen den login zu Django mit cURL?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist eine voll codierte Antwort. Die Idee, die Lösung ist:
-d
.Danach führen Sie jede Anfrage immer über das CSRF-token in den Daten (
$DJANGO_TOKEN
) oder mit einem benutzerdefiniertenX-CSRFToken
header. Melden Sie sich einfach löschen Sie die cookies-Datei.Beachten Sie, dass Sie benötigen ein referer (
-e
), um Django ' s CSRF überprüft glücklich.Habe ich eine etwas sicherere version von diesem code, der verwendet eine Datei zum versenden von POST-Daten, als Gist auf GitHub: django-csrftoken-login-demo.bash
Interessantes Hintergrundwissen über Django ' s CSRF-token ist auf docs.djangoproject.com.
\s
mit[[:space:]]
wie empfohlen, in dieser super-user-post. Auch ich hatte zum ändern der login-URL, weil ich war immer 302s.Eigentlich @Paterino Antwort ist richtig, aber es funktioniert nicht in jeder Implementierung der sed. Stattdessen
sed 's/^.*csrftoken\s*//')
wir könnensed 's/^.*csrftoken[[:blank:]]*//')
das ist mehr altmodisch. MacOSXs curl nicht entkommen, so\n\t\s
überhaupt nicht arbeiten.Vorbei username:password in eine curl-Anfrage ist nur gut für die HTTP-Authentifizierung, die ist nicht wie die meisten websites tun auth in diesen Tagen. Stattdessen werden Sie die posten, um auf die login-Seite Holen Sie sich das cookie, dann gehen Sie zurück, wenn die Anforderung Ihrer gewünschten Seite.