2011-08-16 94 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