Django Tastypie:如何使用API密钥认证

14 投票
1 回答
12191 浏览
提问于 2025-04-17 04:35

我正在用TastyPie制作一个内部API。我有

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

当我关闭认证规则时,我的API运行得很好。但是一旦开启认证规则,不管我怎么尝试,我都会收到401(未授权)的响应。

我知道这可能是那种一旦看到实际情况就会觉得很明显的事情,但在此之前,请告诉我怎么发起请求(一个GET请求)。

1 个回答

19

在你的GET请求中添加用户名和api_key参数。确保你有以下内容:

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

在设置时,请确保遵循文档中的其他说明:

ApiKey认证

ApiKey认证是一种替代方案,它不需要像密码这样的敏感信息,而是只需要用户名和一个机器生成的api密钥。Tastypie提供了一个专门的模型来处理这个,所以你需要确保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)

撰写回答