2017-03-16 4 views
0

DjangoからRemoteUserBackendクラスをコピーし、接続中のremote_userが特定のLDAPグループにあるかどうかを確認してから、認証を続行するかどうかを確認しました。ユーザがDjangoのデータベースに登録される前にログオンしていない場合。私は、first_name、last_name、およびemailフィールドを設定する方法と、ユーザーのものとスーパー管理者を作る方法を理解しようとしています。これは私が持っているコードです。これは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 

答えて

0

発見私の問題....少し恥ずかしい...

それはuser.is_superuser = trueを、ない=真

をuser.is_superadminされている必要があります
関連する問題