2009-08-27 71 views
1

我試圖使用三種不同的身份驗證機制公開一個API調用:django的login_required,HTTP基本身份驗證和OAuth。我有所有三個裝飾,但不能完全弄清楚如何讓他們都順利相處。Django:將mutilple訪問控制裝飾器應用到視圖

所需的邏輯是,如果任何裝飾器/認證機制對用戶的請求有效,則允許訪問視圖 - 基本上是OR。然而,如果我只包含所有三個裝飾器,那麼他們都希望在讓請求通過之前得到滿足 - 一個AND。

解決這個問題的好方法是什麼?

回答

3

我不確定你可以。假設用戶沒有登錄:如果使用login_required服務器將重定向到登錄表單,而使用基本身份驗證,服務器將返回一個帶有WWW-Authenticate響應標頭的401錯誤頁面。你想要發生哪些?我不明白這兩者如何。

+0

好點...讓我想一想。 – Parand 2009-08-27 00:35:16

+0

對於我的API,我允許對會話用戶進行HTTP基本身份驗證和測試,但是我不需要使用登錄。我不重定向到失敗時的登錄網址,而是返回401錯誤。這允許登錄用戶測試API,但如果基本身份驗證或oauth失敗,則不會爲非瀏覽器訪問造成衝突。 – 2011-06-01 18:57:51