Как добавить пользовательские сообщения об ошибках в библиотеке Django Rest Framework API Key?
Я реализовал библиотеку Django Rest Framework API Key для аутентификации в своем проекте, и она работает хорошо, однако я заметил, что
"403 Forbidden"
с
{ "detail": "Учетные данные для аутентификации не были предоставлены" }
.
указывается при возникновении какой-либо проблемы. Например, если срок действия ключа истек, то указываются эти данные, если ключ был предоставлен, но недействителен, то указываются эти данные и т.д.
Я хочу иметь возможность сказать клиенту, что именно не так - потому что для просроченного ключа: "учетные данные не были предоставлены" не является правильным - потому что учетные данные были предоставлены, просто они просрочены!
Возможно ли это - или даже безопасно ли это делать?
Это библиотека: https://florimondmanca.github.io/djangorestframework-api-key/
Вы можете добавить пользовательское сообщение к вашей ошибке, добавив msg к вашему исключению
пример:
class AppUserView(GenericAPIView, CreateModelMixin):
serializer_class = AppUserSerializer
queryset = AppUser.objects.all()
def post(self, request, *args, **kwargs):
user = request.data.get("user")
try:
email_address = EmailAddress.objects.get(user=user)
if email_address.verified == True:
return self.create(request, *args, **kwargs)
else:
msg = gettext_lazy("email address is not verified")
raise exceptions.NotAuthenticated(msg=msg)
except BaseException as e:
print(f"Unexpected {e=}, {type(e)=}")
return Response(status=status.HTTP_401_UNAUTHORIZED, data=e.args[0])
Я не знаю, будет ли это работать с вашей библиотекой, но это может дать вам представление