使用用户身份验证在Django上构建文件上载API

时间:2011-08-16 18:57:44

标签: python django api post

我有一个Django应用程序,允许用户上传文件并对其进行一些处理,我需要为此应用程序编写API。要求是:

  • API必须接受文件上传(这是API唯一负责的事情)
  • 必须支持用户身份验证,这意味着每个上传的文件必须与现有的Django用户相关联

我只是简单地告诉Django在一个特定的URL(我通过将文件传递给curl来点击)上搜索POST数据,我很容易写了第一部分,但这显然不会给我用户AUTH。

如何添加?我应该尝试类似于tastypie的东西,因为它是用于构建API并且支持用户身份验证,即使我只使用这个基本API几乎不会破坏其功能的表面吗?或者我可以告诉Django在POST中接受用户名和密码以及文件吗?是否有通过基于Django构建的API验证用户的最佳实践?

3 个答案:

答案 0 :(得分:2)

我对此的看法是简单地使用django.contrib.auth应用程序,在处理POST请求中的实际文件数据之前,只需验证POST请求是否也包含有效的身份验证信息。您可以通过调用authenticate函数来执行此操作,请参阅https://docs.djangoproject.com/en/dev/topics/auth/#django.contrib.auth.authenticate

以上情况适用于您希望整个流程在单个请求中发生的情况。但是,这意味着在检查身份验证信息之前,将上传整个文件。如果您能够将其拆分为一个auth请求,然后进行文件上传,则可以创建一个视图来处理身份验证,然后通过login_required装饰器保护您的文件上载视图。这将需要会议......

答案 1 :(得分:0)

除非您的应用程序过于苛刻,否则我会考虑使用OAuth对您的API进行身份验证。有一个名为oauth2app的django模块,可以保护oauth身份验证后面的URL。

答案 2 :(得分:0)

验证

  • 为API添加authid。例如url / uploadfile?file = 1.txt& authid = xxx
  • auth id可以从另一个API获取,用户名为&密码验证。

请参阅我的代码进行文件上传& API身份验证位于git