Django-rest-framework api разрешение AllowAny аутентификация не прошла

У меня есть несколькоViews, как показано ниже:

class SomeView(generics.ListAPIView):
    serializer_class = SomeSerializer
    permission_classes = [AllowAny]

settings.py:

REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
    'rest_framework.permissions.AllowAny',

),
...
'DEFAULT_AUTHENTICATION_CLASSES': (
    'rest_framework_simplejwt.authentication.JWTAuthentication',
),
...

}

Когда я запрашиваю без заголовка Authorization, он работает нормально. Но когда я добавляю заголовок Bearer Authorization он отвечает

"detail": "Given token not valid for any token type",
"code": "token_not_valid",

Я дал permission_classes=[AllowAny]. Почему? Я думал, что нет разницы между отправкой или не отправкой tokens. Потому что я установил permission_class=[AllowAny].

В ASP.NET подобных проблем нет. В ASP.NET Если я устанавливаю разрешение AllowAny эта конечная точка открыта для всех, независимо от того, посылаете ли вы Token или нет.

AllowAny. Самым открытым разрешением из всех является AllowAny. Методы has_permission и has_object_permission на AllowAny всегда возвращают True, ничего не проверяя. Его использование необязательно (не задавая класс разрешения, вы неявно задаете этот класс), но все же следует, поскольку это делает намерение явным и помогает поддерживать последовательность во всем приложении

Вы указываете его, включая permission_classes в ваше представление:

from rest_framework import viewsets
from rest_framework.permissions import AllowAny

from .models import Message
from .serializers import MessageSerializer


class MessageViewSet(viewsets.ModelViewSet):

    permission_classes = [AllowAny] # built-in permission class used

    queryset = Message.objects.all() 
    serializer_class = MessageSerializer

Каждый, даже неаутентифицированные пользователи, могут получить доступ к конечной точке API, используя любой HTTP-запрос

AllowAny проверяет токен, если он отправлен, и пропускает, если его нет. Поэтому, если вам не нужна аутентификация, очистите permission_classes

permission_classes = ([])
Вернуться на верх