## 后端
`django_auth_ldap.backend.populate_user`
這是客戶端應該執行用戶對象的額外定制時發送的`Django`信號。 它是在用戶通過身份驗證并且后端完成填充之后發送的,并且在它被保存之前發送。 客戶可以借此機會填充其他模型字段,可能基于`ldap_user.attrs`。 該信號有兩個關鍵字參數:`user`是`User`對象,`ldap_user`與`user.ldap_user`相同。 發件人是`LDAPBackend`類。
`django_auth_ldap.backend.ldap_error`
這是我們收到`ldap.LDAPError`異常時發送的`Django`信號。 信號有三個關鍵字參數:
上下文:“`authenticate`”,“`get_group_permissions`”或“`populate_user`”之一,指示捕獲異常時調用哪個`API`。
用戶:正在處理的`Django`用戶(如果可用)。
異常:`LDAPError`對象本身。
發件人是`LDAPBackend`類(或子類)。
類`django_auth_ldap.backend.LDAPBackend`
LDAPBackend有一個可以直接調用的方法,有幾個可以在子類中重寫。
`settings_prefix`
我們所有的`Django`設置的前綴。默認情況下,這是`'AUTH_LDAP`_',但子類可以覆蓋這個。當不同的子類使用不同的前綴時,它們都可以獨立安裝和運行。
默認設置
一個默認設置的字典。在`LDAPBackend`中這是空的,但子類可以使用將覆蓋內置的默認值的值來填充它。請注意,這些鍵應該省略“`AUTH_LDAP_`”前綴。
`populate_user(username)`
為給定的`LDAP`用戶名填充`Django`用戶。這將使用默認憑據連接到`LDAP`目錄,并嘗試填充指定的`Django`用戶,就像他們剛剛登錄一樣。`AUTH_LDAP_ALWAYS_UPDATE_USER`被忽略(假定為`True`)。
`get_user_model(self)`
返回`get_or_build_user()`將實例化的用戶模型。默認情況下,自定義用戶模型將被尊重。為了替代代理模型,子類很可能會覆蓋這個。
`authenticate_ldap_user(self, ldap_user, password)`
給定一個`LDAP`用戶對象和密碼,認證用戶并返回一個`Django`用戶對象。請參閱定制認證。
`get_or_build_user(self, username, ldap_user)`
給定一個用戶名和一個`LDAP`用戶對象,這必須返回一個有效的`Django`用戶模型實例。 `username`參數已經通過`ldap_to_django_username()`傳遞。 您可以通過`ldap_user.dn`和`ldap_user.attrs`獲取有關`LDAP`用戶的信息。 返回值必須與`get_or_create()`相同 - 一個(實例,創建的)二元組 - 雖然實例不需要保存。
默認的實現是用大小寫不敏感的查詢來查找用戶名。 如果找不到,`get_user_model()`返回的模型將使用小寫的用戶名創建。 直到發送了`django_auth_ldap.backend.populate_user`信號之后,新用戶才會被保存到數據庫中。
一個子類可以重寫這個以使`LDAP`用戶以任何喜歡的方式關聯到`Django`用戶。
`get_or_create_user(self, username, ldap_user)`
警告
已過時。 這是支持向后兼容,但將在未來版本中刪除。
像`get_or_build_user()`一樣,但始終返回保存的模型實例。 如果你重寫這個,請轉換為新的方法。
`ldap_to_django_username(username)`
根據給定的LDAP用戶名(這是用戶輸入的內容)返回一個有效的Django用戶名。 默認情況下,用戶名將保持不變。 這可以被子類覆蓋。
`django_to_ldap_username(username)`
`ldap_to_django_username()`的逆函數。 如果這與`ldap_to_django_username()`不對稱,則行為是未定義的。