Почему не работает аутентификация токенов Django Rest Framework?

В настоящее время я использую Django rest framework и пытаюсь реализовать систему Token Authentication. В настоящее время мой settings.py выглядит следующим образом:

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.TokenAuthentication'
    ]
}

и rest_framework.authtoken находится в installed_apps.

Мой urls.py выглядит следующим образом:

urlpatterns = [
    ...
    url('^v1/users/$', views.users_view),
    ...
]

Мой views.py выглядит следующим образом:

@authentication_classes((TokenAuthentication,))
@api_view(['PUT', 'POST'])
def users_view(request):
...

Я работаю в postman для тестирования API, и независимо от того, помещаю ли я токен в поле авторизации Bearer Token, API работает как положено. Что мне нужно изменить, чтобы аутентификация по токену работала как положено?

Необходимо добавить класс разрешения.

@authentication_classes((TokenAuthentication,))
@permission_classes((IsAuthenticated,))
@api_view(['PUT', 'POST'])
def users_view(request):
...

Похоже, что в Django есть ошибка, которая не позволяет некоторым аутентификациям работать с представлениями на основе функций. Я могу подтвердить, что это не работает для TokenAuthentication и необходимо использовать представления на основе классов.

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