Ich mache eine eckige App, die in einer Django-Site mit einem Rest API authentifiziert. Im doc von DRF geben sie an, dass ein verweigert die Benutzerauthentifizierung in zwei Fehler führen wird, HTTP 401 und HTTP 403, wie folgt:Django Rest Framework Authentifizierung Fehler
Wenn ein nicht authentifizierter Anfrage Erlaubnis dort verweigert wird zwei verschiedene Fehlercodes sind, die geeignet sind, .
- HTTP 401 Unauthorized
- HTTP 403 Permission
verweigert
Howenever, wenn ich versuche, mit einigen Dummy-Daten zu authentifizieren, das ist falsch absichtlich, erhalte ich Fehler Antwort HTTP 400 und mit non_field_errors
. Was ist das Problem hier?
Zuerst mache ich eine einfache Authentifizierung mit dem Benutzernamen und dem Passwort, dies gemacht, um das Benutzer-Token zu erhalten, das für andere Operationen auf der Website benötigt wird.
Ich bin ein Verfahren unter Verwendung eines Expering Auth-Token zu erhalten, können Sie es unten sehen:
Klasse ObtainExperingAuthToken (ObtainAuthToken): def Post (self, Anfrage, * args, ** Kargs): Serializer = self.serializer_class (data = request.data)
if serializer.is_valid():
print serializer
user = UserProfile.objects.get(email=serializer.data['username'])
token, created = Token.objects.get_or_create(user=user)
utc_now = timezone.now()
if not created and token.created < utc_now - datetime.timedelta(hours=24):
token.delete()
print serializer.data
token = Token.objects.create(user=serializer.data['user'])
token.created = datetime.datetime.utcnow()
token.save()
groups = [group.name for group in user.groups.all()]
response_data = {
'email': user.email,
'token': token.key,
'groups': groups
}
return HttpResponse(json.dumps(response_data), content_type='application/json')
return HttpResponse(serializer.errors, status=400)
@Edit Der Wert für REST_FRAMEWORK
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly',
],
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.SessionAuthentication',
'accounts.authentication.ExpiringTokenAuthentication',
],
'DEFAULT_PARSER_CLASSES': [
'rest_framework.parsers.JSONParser',
'rest_framework.parsers.FormParser',
'rest_framework.parsers.MultiPartParser',
'rest_framework.parsers.FileUploadParser'
]
}
Sorry, ich werde das klären. Ich stelle das Benutzerzugriffstoken nicht zur Verfügung, sondern gebe einen falschen Benutzernamen und ein falsches Passwort an einen Endpunkt, der mir das Zugriffstoken mit dem Backend zur Verfügung stellen soll, um den Benutzer mit den bereitgestellten Daten zu authentifizieren. Ich hatte erwartet, Unatourized oder Forbbiden zu empfangen, wie auch immer ich stattdessen eine schlechte Anfrage erhalte. Ich werde die Frage mit den 'REST_FRAMEWORK' Werten bearbeiten. –