0
我從Django複製RemoteUserBackend類並修改它以檢查連接的remote_user是否在特定的LDAP組中,然後繼續進行認證。如果用戶在Django數據庫中填充用戶之前從未登錄過。我試圖找出如何設置first_name,last_name和email字段以及使用戶的東西和superadmin。這是我有的代碼。它是RemoteUserBackend類的一部分。我做錯了什麼。 LDAP查找很好,但用戶沒有更改。如何在RemoteUserBackend認證過程中自定義用戶
def configure_user(self, user):
"""
Configures a user after creation and returns the updated user.
By default, returns the user unmodified.
"""
con = ldap.initialize(settings.AUTH_LDAP_SERVER_URI)
bind_dn = settings.AUTH_LDAP_BIND_DN
bind_pw = settings.AUTH_LDAP_BIND_PASSWORD
con.simple_bind_s(bind_dn, bind_pw)
base_dn = settings.AUTH_LDAP_USER_DN
attrs = ['givenName', 'sn', 'mail']
filter = '(SAMAccountName={0})'.format(user.username)
ldap_user = con.search_s(base_dn, ldap.SCOPE_SUBTREE, filter, attrs)
givenName = ldap_user[0][1]['givenName'][0].decode('utf-8')
sn = ldap_user[0][1]['sn'][0].decode('utf-8')
mail = ldap_user[0][1]['mail'][0].decode('utf-8')
user.is_staff = True
user.is_superadmin = True
user.first_name = givenName
user.last_name = sn
user.email = mail
user.save()
return user