2009-09-29 91 views
6

我最近開始學習/使用django;我試圖找出一種方法來爲管理員和用戶提供兩個單獨的身份驗證系統。我不想創建一個全新的認證系統,我想利用django的內置功能(即會話管理,@login_required裝飾器等)。Django獨立的管理員/用戶認證系統

具體而言,我想有兩個單獨的登錄表 - 一個用於管理員,一個用戶。 admin登錄表應該是django使用默認字段生成的默認表(即id, username, email, is_staff, etc.)。另一方面,用戶表,我想有只有5個字段 - id, email, password, first_name, last_name。此外,我想使用django內置的會話管理爲登錄表和@login_required裝飾器的各自的看法。最後,我想爲管理員和用戶提供兩種獨立的不同登錄表單。

任何人有任何建議我如何能實現我的目標或知道任何可以幫助我的文章/例子?

+0

對於大多數任務來說權限已經不夠嗎?管理員只是具有適當權限的用戶。如果你不需要微調權限,那麼甚至還有'user.is_staff' /'user.is_superuser'。 – drdaeman 2009-09-29 20:05:50

+0

看來我的問題還不清楚,我通過添加更多細節和細節來編輯我的問題,希望更清楚。感謝您的見解/幫助。 – Dan 2009-09-30 00:54:36

回答

1

如果我正確理解你的問題(也許我沒有),我想你是問如何爲非管理員用戶創建一個單獨的登錄表單,同時仍然使用標準的Django認證機制User模型,等等。這是由Django通過django.contrib.auth.views中的視圖本地支持的。

你想從django.contrib.auth.views.login開始。一個行添加到你的URLconf像這樣:

(r'^/login/$', 'django.contrib.auth.views.login', {'template_name': 'myapp/login.html'}) 

login通用視圖接受template_name參數,這是路徑到您的自定義登錄模板(有一個通用的一個,你可以使用,以及通過django.contrib.auth提供) 。

有關login,logout,password_change和其他通用視圖的完整文檔可在Django Authentication Docs中獲得。

0

稍微修改一下,讓用戶在他們的用戶名上有一個類別前綴?你沒有給我們很多關於你想做什麼的信息,有可能你的需求可以通過使用網站框架來滿足,或者只需兩個單獨的django安裝。

如果您要做的是將用戶登錄頁面和管理員登錄頁面分開,只需使用文檔中詳細介紹的內置框架創建「用戶」登錄頁面並單獨保留管理員。如果你擔心用戶會以某種方式開始編輯管理員登錄信息,那麼不要這樣做,除非你允許,否則他們不會。

1

您可能會編寫一個或多個自定義身份驗證後端。這是記錄here。例如,我編寫了一個自定義後端來對LDAP服務器進行身份驗證。