Django Tastypie: Как аутентифицировать с помощью API -ключа
Вопрос
Я делаю внутренний API с Tastypie. У меня есть
from tastypie.authentication import ApiKeyAuthentication
class MyResource(ModelResource):
Meta:
authentication = ApiKeyAuthentication()
С отключенными правилами AUTH мой API отлично работает. С ним я получаю 401 (несанкционированный) ответ, независимо от того, что я пытаюсь.
Я уверен, что это одна из тех вещей, которые действительно очевидны, как только вы увидите это в действии, но в то же время, пожалуйста, посоветуйте, как сделать запрос (получить).
Решение
Добавьте параметры имени пользователя и API_KEY в ваши переменные GET. Убедитесь, что у вас есть
curl http://localhost:8000/api/v1/books/?username=issackelly\&api_key=123456789adfljafal
Обязательно следуйте другим инструкциям от Docs Docs при его настройке:
Apikeyauthentication
В качестве альтернативы требованию конфиденциальных данных, таких как пароль, Apikeyauthentication позволяет собирать только имя пользователя и клавишу API, сгенерированного машиной. Tastypie поставляется со специальной моделью только для этой цели, поэтому вам нужно убедиться, что TastyPie находится в stemed_apps.
Tastypie включает в себя функцию сигнала, которую вы можете использовать для автоматических объектов Apikey. Зацепите это выглядит как:
from django.contrib.auth.models import User
from django.db import models
from tastypie.models import create_api_key
models.signals.post_save.connect(create_api_key, sender=User)