Django Tastypie: как пройти аутентификацию с помощью ключа API - PullRequest
14 голосов
/ 19 октября 2011

Я делаю внутренний API с TastyPie. У меня

from tastypie.authentication import ApiKeyAuthentication
class MyResource(ModelResource):
  Meta:
    authentication = ApiKeyAuthentication()

При отключенных правилах аутентификации мой API отлично работает. При этом я получаю ответ 401 (НЕСАНКЦИОНИРОВАННО) независимо от того, что я пытаюсь.

Я уверен, что это одна из тех вещей, которые действительно очевидны, когда вы увидите это в действии, но пока, пожалуйста, посоветуйте, как сделать запрос (GET).

1 Ответ

19 голосов
/ 19 октября 2011

Добавьте параметры username и api_key в ваши переменные GET. Убедитесь, что у вас есть

curl http://localhost:8000/api/v1/books/?username=issackelly\&api_key=123456789adfljafal

При настройке обязательно следуйте другим инструкциям из документации:

ApiKeyAuthentication

В качестве альтернативы требованию секретных данных, таких как пароль, ApiKeyAuthentication позволяет собирать только имя пользователя и генерируемый компьютером ключ API. Tastypie поставляется со специальной моделью для этой цели, поэтому вам нужно убедиться, что вкусный пирог находится в INSTALLED_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)
...