Возникли проблемы при использовании TokenAuthentication в CoreAPI

Я строю API для приложения django, используя библиотеку rest_framework django. Все прошло отлично, и я могу получить доступ к своему API с помощью команд curl, как и ожидалось.

Теперь я хотел бы сделать вещи более элегантными в форме клиентской библиотеки с использованием CoreAPI.

Я могу сделать обычную аутентификацию следующим образом:

auth = coreapi.auth.BasicAuthentication(username=user, password=password)
client = coreapi.Client(auth=auth)

И я могу получить доступ к схеме API просто отлично.

Тем не менее, я хотел бы использовать мою аутентификацию токена (через rest_framework.tokenauthenticaiton) (которая прекрасно работает через curl) Я получаю сообщение об ошибке, мой код выглядит примерно так:

token = 'Token abc12345'
#tried the following:
#token = 'abc12345'
#token = 'Authorization: Token abc12345'
auth = coreapi.auth.TokenAuthentication(token=token)
client = coreapi.Client(auth=auth)

Пытаясь получить доступ к схеме, я получаю:

coreapi.exceptions.ErrorMessage: <Error: 401 UNAUTHORIZED>
    detail: "Authentication credentials were not provided."

Документация показывает, что для TokenAuthentication в качестве аргументов требуются схема и токен, однако в примере показана TokenAuthentication с JWT, а не с djangos rest_framework.tokenauthentication.

Любой совет будет принят во внимание!

1 ответ

Решение

У меня просто были такие же проблемы. Исправление состояло в том, чтобы установить аргумент "схема =" токен "для coreapi.auth.TokenAuthentication. Итак, что-то вроде этого может работать для вас:

token = 'abc12345' # don't put the word 'Token' in front. 
auth = coreapi.auth.TokenAuthentication(scheme='Token', token=token)
client = coreapi.Client(auth=auth)
Другие вопросы по тегам