2012-06-03 16 views
2

我實現了一個django自定義身份驗證後端。我的authenticate()返回像這樣的用戶對象return User(username=username, password=password),但我從不將User對象存儲到數據庫。爲什麼django需要一個數據庫用於自定義身份驗證後端?

  1. 爲什麼django文檔建議使用用戶對象創建數據庫? (https://docs.djangoproject.com/en/1.4/topics/auth/#writing-an-authentication-backend - 「...處理這個問題的最好方法是爲每個用戶創建一個Django用戶對象,存在爲您的後端...「)

  2. 如果我嘗試呼叫登錄(),有一個對數據庫的調用。如果登錄存儲在會話中,爲什麼需要數據庫? (使用緩存會話)

回答

3

爲什麼你特別需要保存User對象的原因是,它是常見的應用來創建(爲了堅持跨多個請求的關係)對象和用戶之間的數據庫級關係。

一個簡單的例子就是活動日誌django.contrib.admin。它顯示用戶已執行的最近行爲。這僅在將用戶對象保存到數據庫時有效。

+0

謝謝,這是有道理的。對我來說,讓用戶存儲在兩個不同的數據庫1)自定義後端2)django數據庫似乎很奇怪。例如,如果用戶更改了密碼,那麼需要完成一些額外的簿記工作,以確保在兩個地方完成更改。 – jastr

+0

是的,你的用例肯定很尷尬。整個'auth.User'情況是一個正在討論如何使它更加靈活的領域。 –

1

不少應用程序有一個外鍵auth.User;如果您沒有填充該表格,則無法使用這些應用程序。

相關問題