2013-08-20 128 views
4

截至目前,我有一個Django REST API,並且對於Web應用程序的所有內容都是hunky dory,其中我已在後端實現了用戶身份驗證。 「login_required」條件適用於基於Cookie的網絡應用程序。如何使用Django REST API驗證android用戶POST請求?

我現在有一個Android應用需要訪問相同的API。我可以登錄用戶。我需要知道的是,如何在向我的視圖發出GET/POST請求時驗證每個用戶?

我的研究顯示了幾個解決方案: 1)cookie的支持會話 2)發送用戶名和密碼與每一個GET/POST請求(可能不安全)

任何想法?

回答

8

這聽起來像你使用Django的REST框架在這種情況下TokenAuthentication可能是合適的。 從文檔:

此驗證方案使用一個簡單的基於令牌的HTTP 認證方案。令牌認證適用於 客戶端 - 服務器的設置,如本機桌面和移動客戶端

你不需要預先生成的令牌作爲客戶機可以使用要求一個內置的視圖obtain_auth_token你在你的urls.py中進行配置。

一旦客戶端獲得會話標記,他們就可以使用Authorization: HTTP標頭在隨後的API調用中提供該標記。

退房更多信息的文檔:您可能需要使用Django的會話中間件,這將設置一個cookie與一個Django SESSION_ID http://www.django-rest-framework.org/api-guide/authentication/#tokenauthentication

3

HTTP基本認證(BA)實施強制執行訪問控制,網絡資源,因爲它 不需要Cookie,會話標識符和登錄頁面的最簡單的 技術。相反, HTTP基本身份驗證使用靜態,標準HTTP標頭這 意味着沒有握手都在期待

想了解更多,並得到一個想法,你需要做的服務器和客戶端實現的東西做,閱讀:

http://en.wikipedia.org/wiki/Basic_access_authentication

我用不同的REST的Java框架,他們都提供了簡單的API來補充基本身份驗證頭添加和檢索。

Django的,這裏有一些有用的代碼片段:

http://djangosnippets.org/snippets/243/

0

。在以下請求中,會話中間件將在您的請求對象上設置一個名爲user的屬性,然後您可以測試用戶是否通過request.user.is_authenticated()(或login_required裝飾器)進行身份驗證。此外,您可以將會話超時設置爲任何您喜歡的設置。

該中間件在默認的django設置中啓用。

相關問題