Я использую пакет Django с именем django-safedelete , который позволяет удалять пользователей, не удаляя их из базы данных.
По сути, он добавляет атрибут delete
в модельи запросы типа User.objects.all()
не будут возвращать удаленные модели.
Вы по-прежнему можете запрашивать все объекты с помощью специального менеджера.Например, User.objects.all_with_deleted()
вернет всех пользователей, включая удаленных.User.objects.deleted_only()
вернет удаленные.
Это работает как положено, за исключением одного случая.Я использую Token Authentication для моих пользователей с Django Rest Framework 3.9, и в моих представлениях DRF я использую встроенное разрешение IsAuthenticated
.
Код базового CBV, который я использую:
class MyView(APIView):
permission_classes = (IsAuthenticated,)
def get(self, request):
return Response(status=HTTP_200_OK)
Код реализации DRF разрешения IsAuthenticated
:
class IsAuthenticated(BasePermission):
"""
Allows access only to authenticated users.
"""
def has_permission(self, request, view):
return bool(request.user and request.user.is_authenticated)
Проблема
Когда пользователь удаляется программным способом, он все еще может проходить аутентификацию, используяего токен.
Я ожидаю, что у пользователя будет 401 Несанкционированная ошибка, когда он удаляется программно.Что не так?