2011-06-12 68 views
0

我一直在尋找Django的Admin應用程序的代碼,以確定他們如何在用戶的所有視圖上執行全面的身份驗證檢查,而不知道它是如何完成的(Django初學者在這裏)。Django管理員身份驗證如何工作?

例如,在Admin的sites.py中有index視圖,如果用戶未通過身份驗證,則該視圖根本不會被調用。我知道有一些預處理髮生,導致login被調用,但我無法識別調用login的方法。

有沒有人對Admin應用程序的請求流程有任何想法?

回答

3

以下是相關文件 - django/contrib/admin/sites.py。具體來說,查看線路170上的admin_view修飾符(這是調用login的位置)和wrap修飾符,其中後者應用於線路217上的urlpatterns的每個視圖。(它類似於login_required來自django.contrib.auth作品的裝飾者)。

基本上,每個視圖被包裹在檢查用戶是否可以訪問管理站點(管線147,request.user.is_active and request.user.is_staff一個裝飾 - 注意,如果用戶沒有登錄,那麼request.userAnonymousUser一個實例,爲此is_activeis_staff始終爲False),如果不是,則顯示login視圖。

+0

正確 - 所以當URL被檢索到時,它們會自動用'admin_view'包裝,它會在實際視圖被調用之前自動執行檢查。謝謝! – 2011-06-12 03:32:24