【问题标题】:Django Tastypie: How to Authenticate with API KeyDjango Tastypie:如何使用 API 密钥进行身份验证
【发布时间】:2011-12-10 11:27:41
【问题描述】:

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

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

禁用身份验证规则后,我的 API 运行良好。启用它后,无论我尝试什么,我都会收到 401(未经授权)响应。

我敢肯定,一旦您看到它的实际效果,这是非常明显的事情之一,但与此同时,请告知如何提出请求(GET)。

【问题讨论】:

    标签: python django tastypie


    【解决方案1】:

    将用户名和 api_key 参数添加到您的 GET 变量中。确保您拥有

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

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

    ApiKeyAuthentication

    作为需要密码等敏感数据的替代方案,ApiKeyAuthentication 允许您仅收集用户名和机器生成的 api 密钥。 Tastypie 附带了一个专门用于此目的的特殊模型,因此您需要确保 sweetpie 位于 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)
    

    【讨论】:

    • 完美。总是小事。谢谢。
    • 您的模型资源还应该允许过滤字段用户名。 readthedocs.org/docs/django-tastypie/en/latest/…
    • 还要确保 shell 没有将 ..&api_key.. 的 & 解释为后台命令。用 "" 包围 URL 或用 \& 转义 & 对我有帮助。
    • 向服务器发送请求时从哪里获取APIKey??
    • 两件事@Dor。 1) 使用 SSL。 2)大概您的 API 密钥与您的密码具有不同的访问权限。潜在的 SSL + 密码访问 (BasicAuth) 对许多应用程序都有好处。否则,如果第三方正在编写应用程序,请考虑使用 OAuth。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    • 2019-02-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多