# 用戶對象
對外部源的認證是膨脹的,但`Django`的認證模塊緊緊地綁定到用戶模型。當用戶登錄時,我們必須創建一個模型對象來在數據庫中表示它們。由于`LDAP`搜索不區分大小寫,因此默認實現還使用`iexact`查詢搜索現有的`Django`用戶,并使用小寫用戶名創建新用戶。如果你想覆蓋這個行為,請參閱`get_or_build_user()`。如果您想替換代理模型,請參閱`get_user_model()`。
默認情況下,使用用戶模型的`USERNAME_FIELD`對現有用戶進行查找。要查看其他字段,請使用`AUTH_LDAP_USER_LOOKUP_FIELD`。設置時,用戶名字段將被忽略。
當使用默認查找時,用戶唯一必需的字段是用戶名。默認的用戶模型可以挑選用戶名中允許的字符,所以`LDAPBackend`包含一對鉤子`ldap_to_django_username()`和`django_to_ldap_username()`,用于在LDAP用戶名和Django用戶名之間進行轉換。例如,如果您的`LDAP`名稱中包含句點,則可能需要此選項。你可以繼承`LDAPBackend`來實現這些鉤子;默認情況下,用戶名不會被修改。通過`LDAPBackend`進行身份驗證的用戶對象將具有包含原始(`LDAP`)用戶名的`ldap_username`屬性。用戶名(或者`get_username()`)當然是`Django`的用戶名。
**注意**
由`LDAPBackend`創建的用戶將設置不可用的密碼。 這只會在創建用戶時才會發生,所以如果您在`Django`中設置了有效的密碼,那么即使用戶被LDAP拒絕,用戶也將能夠通過`ModelBackend`(如果已配置)登錄。 通常不建議這樣做,但是在`LDAP`服務器不可用的情況下,它可以作為選定用戶的自動防故障功能。