Почему не работает аутентификация токенов 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 и необходимо использовать представления на основе классов.