2011-08-16 125 views
2

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

  • API必须接受文件上传(这是真正的API将负责的嘛)
  • 用户验证必须被支持,这意味着上传必须相关联的每个文件与现有的Django用户

我的只是告诉Django的为侦听特定的URL POST'ed数据(我打通过传递文件,以curl)很容易写的第一部分,但显然不会给我的用户AUTH。

我该如何添加?我应该尝试一些类似tastypie的东西,因为它是用于构建API的,并且支持用户认证,尽管我只会用这个基本的API来简单地描述它的功能。或者我可以告诉Django在POST中接受用户名和密码以及文件吗?是否有通过构建在Django之上的API对用户进行身份验证的最佳做法?

+0

整个事情是在一个请求中发生,还是可能发生在两个阶段? – koniiiik

+0

@koniiiik理想情况下是一个请求,但如果两个阶段的LOE少得多,那么我会解决这个问题。你在想什么? –

回答

2

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

以上情况适用于您希望整个过程在单个请求中发生的情况。但是,这意味着整个文件将在之前上传检查认证信息。如果你可以负担得起把它分成一个认证请求和一个文件上传,你可以创建一个视图来处理认证,然后由login_required修饰器保护你的文件上传视图。这将要求会议...

0

除非它对你的应用程序来说过大,否则我会考虑使用OAuth来验证你的API。有一个叫做oauth2app的django模块,可以让你在oauth认证后守护一个URL。

0

验证

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

请参考我的代码文件上传& API验证在git