Я делаю угловое приложение, которое проходит аутентификацию на сайте django, используя rest api. В документ о DRF они заявляют, что аутентификация отказано пользователь будет приводить в двух ошибок, HTTP 401 и HTTP 403, следующим образом:Ошибки аутентификации Django Rest Framework
Когда неавторизованный запрос отклонен разрешение есть два различных кодов ошибок, которые могут быть пригодными ,
- HTTP 401 Несанкционированное
- HTTP 403 Отказано
Howenever, когда я пытаюсь проверить подлинность некоторых фиктивных данных, что это неправильно нарочно, я получаю ошибку ответа HTTP 400 и с non_field_errors
. В чем проблема?
Сначала я делаю простую аутентификацию с именем пользователя и паролем, чтобы сделать токен пользователя, который понадобится для других операций на сайте.
Я использую метод, чтобы получить expering маркер аутентификации, вы можете увидеть ниже:
класс ObtainExperingAuthToken (ObtainAuthToken): Защиту пост (самостоятельно, запрос, * арг ** kargs): сериализатор = self.serializer_class (данные = 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 значение 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'
]
}
Извините, что я это разъясню. Я не предоставляю токен доступа пользователя, я предоставляю неверное имя пользователя и пароль конечной точке, которая должна предоставить мне токен доступа с помощью бэкэнд, чтобы он мог аутентифицировать пользователя с данными предоставления. Я ожидал получить Unathourized или Forbbiden, но вместо этого я получаю Bad Request. Я отредактирую вопрос с помощью значений REST_FRAMEWORK. –