Ich gebe einige JSON-Daten an und füge einen Authorization
-Header hinzu. Das Anforderungsobjekt verfügt jedoch nicht über die richtige Berechtigungseigenschaft. HTTP_AUTHORIZATION
und headers
zeigen beide die richtigen Autorisierungsdetails.
Ihr Berechtigungsheader ('Authorization', 'testkey:')
muss Base64-codiert sein und Basic
enthalten.
in Python:
%Vor% Setzen Sie in javascript Ihre Kopfzeile mit btoa
:
In Ihrem Fall wird dies dazu führen, dass der Header als:
erscheint ('Authorization', 'Basic dGVzdGtleTo=')
Das Attribut request.authorization
wird nur gesetzt, wenn Sie eine gültige Basisberechtigung oder Digest Authorization Kopfzeile; Der Header Authorization
hat bestimmte Formate, wobei das erste Wort im Header den Typ festlegt und das Attribut nur diese beiden spezifischen Typen behandelt (gekennzeichnet durch die Schlüsselwörter Basic
oder Digest
type).
Aus der AuthorizationMixin.authorization
Attribut-Dokumentation
Das Authorization -Objekt in analysierter Form.
im Anschluss an die Authorization
Objektdokumentation :
Stellt einen Autorisierungsheader dar, der vom Client gesendet wird. Sie sollten dieses Objekt nicht selbst erstellen, sondern es verwenden, wenn es von der Funktion parse_authorization_header zurückgegeben wird.
Das ist dokumentiert als :
Analysieren Sie einen HTTP basic / Digest Autorisierungs-Header , der vom Webbrowser übertragen wird. Der Rückgabewert ist entweder None , wenn der Header ungültig oder nicht angegeben war, andernfalls ein
Authorization
-Objekt.
Kühne Betonung meiner.
Ihre Kopfzeile ist keine solche gültige Kopfzeile; Es hat nicht den Typ Basic
oder Digest
type. Wenn Sie einen solchen Header haben, gibt die Funktion etwas anderes als None
:
Ich habe dort einen Basic
type-Header verwendet, wobei der Rest des Header-Wertes ein Base-64-codiertes Benutzername- und Passwort-Paar ist, das durch einen :
Doppelpunkt getrennt ist.
Wenn Sie Ihr eigenes Authentifizierungsschema implementieren möchten, greifen Sie einfach auf die Kopfzeile selbst zu und parsen Sie sie manuell.
%Vor% Wenn Sie Apache + WSGI verwenden, vergessen Sie nicht die Direktive WSGIPassAuthorization On
.