Permission.AllowAny не работает в knoxLoginView

Я пытался использовать knoxLoginView для входа в систему с аутентификацией по токену, и в документации knox было сказано, что для того, чтобы loginView работал и не выдавал ошибку 401 unauthorized, я должен либо добавить класс разрешения "AllowAny", либо переопределить класс аутентификации с BasicAuthentication. Я попробовал оба варианта, ни один из них не сработал, представление входа по-прежнему выбрасывает ошибку 401 unauthorized. Удивительно то, что я видел учебник на youtube, где парень использовал permission.AllowAny и это работало, не знаю, почему это не работает у меня. Вот код представления входа:

class LoginAPI(KnoxLoginView):
    permission_classes = (permissions.AllowAny,)
    
    def post(self, request, format=None):
        serializer = AuthTokenSerializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = serializer.validated_data['user']
        login(request, user)
        return super(LoginAPI, self).post(request, format=None)

settings.py:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
    'knox',
    'corsheaders',
    'users',
    
]

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': [
            'rest_framework.permissions.AllowAny',
        ],
    'DEFAULT_AUTHENTICATION_CLASSES': [
        #'rest_framework.authentication.BasicAuthentication' ,
        'knox.auth.TokenAuthentication',
        
    ]
    }

Для тех, кто также столкнулся с этой проблемой, и весь stackoverflow даже не пытается помочь, если у вас есть это в вашем файле urls:

path('path_url/', include('knox.urls')),

удалите его, потому что он почему-то отказывает в разрешениях и настаивает на предоставлении авторизации, поэтому он будет работать, только если вы измените аутентификацию на BasicAuthentication, возможно, это ошибка аутентификации knox.

Вернуться на верх