这是我的第一个API,如果我做出任何错误的声明,请原谅/纠正我。
我有一个拥有API的应用。我只希望有一个有效API密钥的外部应用程序(移动客户端等)可以访问它,我认为django-rest-framework的TokenAuthentication是最适合它的。我还希望用户能够使用他们的用户名和用户登录。密码,我希望使用OAuth2Authentication。但我不希望使用TokenAuthentication的应用程序在数据库中拥有“用户”实例(因为它们不是传统意义上的用户)所以我正在考虑做这样的事情:
class Client(User):
pass
答案 0 :(得分:0)
对于移动客户端可以访问您的API,使用django-restframework的TokenAuthentication将正常工作。正如你已经确定的那样。您需要设计一个分发令牌的机制。如果您是动态执行此操作,则需要让您的API请求处理此问题。
移动客户端:(初始API请求)
服务器:401
你可以定义你的API如何实现这一点,大多数人使用http: 401 Unauthorized错误代码。我指出这一点,因为它显然是一个设计决定。
移动客户端:(请求登录)
服务器:200
移动客户端:(在http标头中重新请求包含令牌的API)
服务器:200
最后:您需要设计一种策略来“延长”您的令牌,或锁定用户。
另外:请务必将“rest_framework.authtoken”添加到您的INSTALLED_APPS中,并确保拨打manage.py syncdb
除了:您没有特别使用TokenAuthentication(request.user,request.auth),您可以编写自己的代码来查看标头并查看是否设置了令牌。这对python Cookie lib来说相当容易。您仍在使用django-rest-framework的令牌管理功能。老实说,我认为配置'TokenAuthentication'身份验证后端的文档有点不完整。
希望这有帮助!