Ich habe versucht, meinen django-rest-framework-Testclient über die HTTP-Standardauthentifizierung anzumelden, um ein REST-API-Token zu erhalten. Aber musste feststellen, dass es nicht einmal meine zufällig generierten Benutzernamen und Passwort zu lang ist:Python: Ungültiger HTTP-Basis-Authentifizierungs-Header mit langer Base64-Zeichenfolge
def login_client(self):
uid = uuid.uuid4().hex
user = User.objects.create(username=uid, email="{}@foo.de".format(uid))
user.set_password(uid)
user.save()
self.client.credentials(HTTP_AUTHORIZATION=self.get_knox_auth_header(uid, uid))
response = self.client.post(reverse("knox_login"))
print response.content.data["token"]
def get_knox_auth_header(self, username, password):
return "Basic {}".format("{}:{}".format(username, password).encode("base64"))
Kopf wie folgt aussieht:
Basic MTAyZDc2OTJjY2E5NGY0NmFmNThkODNmNDc5NTc6MTAyZDc2OTJjY2E5NGY0NmFmNThkODNmNDc5
NTc=
Antwort:
{"detail":"Invalid basic header. Credentials string should not contain spaces."}