Как избежать проверки заголовка авторизации для ReadOnly Modelviewset - PullRequest
0 голосов
/ 20 марта 2020

У меня есть представление со следующим разрешением

permission_classes = [IsOwnerOrReadOnly]

определение разрешения:

class IsOwnerOrReadOnly(permissions.BasePermission):
    def has_object_permission(self, request, view, obj):
        if request.method in permissions.SAFE_METHODS:
            return True

        # the object has a owner attribute
        return obj.owner == request.user

Это перечисление объектов работает, как и ожидалось, если пользователь прошел проверку подлинности и передал правильный маркер доступа , это также работает, если я не добавлю Authorization в шапку.

Единственная проблема возникает, когда токен авторизации истек или неправильно. Отправляет 401 ответ.

Invalid token header. No credentials provided.

Как можно игнорировать токен авторизации в django коде для правильного или неправильного заголовка авторизации.

1 Ответ

0 голосов
/ 20 марта 2020

Я нашел способ достичь того, что я намерен. Однако я не уверен, является ли это стандартом или нет. override execute_authentication в Modelviewset делает свою работу, и мы можем убрать авторизацию из заголовка.

def perform_authentication(self, request):
    if 'HTTP_AUTHORIZATION' in request.META:
        request.META.pop('HTTP_AUTHORIZATION')
...