2013-03-31 22 views
2

我试图通过ldap登录到管理网站。 用户在ldap中找到。我的问题是,每次我尝试登录,我得到这个错误。Django用户julienb没有可填充的配置文件

search_s('ou=utilisateurs,ou=employee,dc=bi,dc=invik,dc=lu', 2, '(SAMAccountName=%(user)s)')returned 1 objects: cn=julien boelen,ou=utilisateurs,ou=employee,dc=bi,dc=invik,dc=lu 

search_s('ou=utilisateurs,ou=employee,dc=bi,dc=invik,dc=lu', 2, '(SAMAccountName=%(user)s)')returned 1 objects: cn=julien boelen,ou=utilisateurs,ou=employee,dc=bi,dc=invik,dc=lu 

Populating Django user julienb 

Populating Django user julienb 

Django user julienb does not have a profile to populate 

Django user julienb does not have a profile to populate 

很明显,我无法登录管理网站。 我不知道该怎么告诉Django“不使用配置文件!只要让我登录在”

这里是我的settings.py

AUTHENTICATION_BACKENDS = (

    'django_auth_ldap.backend.LDAPBackend', 
    'django.contrib.auth.backends.ModelBackend',      

) 

AUTH_LDAP_SERVER_URI = "ldap://192.168.1.5/" 
AUTH_LDAP_CONNECTION_OPTIONS = { 
     ldap.OPT_DEBUG_LEVEL: 0, 
     ldap.OPT_REFERRALS: 0, 
} 


AUTH_LDAP_BIND_DN = "browser" 
AUTH_LDAP_BIND_PASSWORD = "Django15iscool" 
AUTH_LDAP_USER_SEARCH = LDAPSearch("ou=utilisateurs,ou=employee,dc=bi,dc=invik,dc=lu", 
         ldap.SCOPE_SUBTREE, '(SAMAccountName=%(user)s)') 


AUTH_LDAP_USER_ATTR_MAP = { 
    "first_name": "givenName", 
    "last_name": "sn", 
    "email": "mail" 
    } 

我想不出我为什么不能登录,为什么他要求一个配置文件,我不使用配置文件,是否有指定通知django不关心配置文件,并让我登录:)

+0

http://stackoverflow.com/questions/6356705/mapping-ldap-users-to-django-users-with -django认证 - LDAP – catherine

回答

1

LDAPBackend不会创建配置文件。首先尝试使用用户模型类创建用户。您需要在Django项目目录的命令:

python manage.py shell 

,然后在Python壳尝试:

>>> from django.contrib.auth.models import User 
>>> user = User.objects.create_user('username', None, None) 
>>> user.save() 

通过这种方式,用户正确创建,还用空密码。 该配置文件可以包含其他字段,您可以使用设置中的AUTH_LDAP_PROFILE_ATTR_MAP参数使用LDAP属性填充该字段。如果您对定制​​感兴趣,请注意,因为在Django 1.5中,用户配置文件已被弃用,并被自定义用户模型替代,应该更灵活。

https://docs.djangoproject.com/en/1.5/topics/auth/customizing/#extending-the-existing-user-model https://docs.djangoproject.com/en/1.5/topics/auth/customizing/#substituting-a-custom-user-model

2

我知道档案日志看起来吓人,但它实际上是一个红鲱鱼的事*。您真正的问题是您尝试使用没有员工或超级用户权限的帐户登录管理页面。有两种方式来处理给定您当前的设置:

1)如果您希望您的帐户的超级用户特权从您的LDAP模型继承,您将需要为is_superuser属性设置用户标志映射,到

AUTH_LDAP_USER_FLAGS_BY_GROUP = { 
    "is_superuser": "cn=superuser,ou=groups,dc=example,dc=com" 
} 

2)如果不工作的效果,你将需要与已经拥有超级用户权限的现有帐户登录。当您完成第一个python manage.py syncdb时,应该提示您创建一个超级用户帐户。只要您仍在使用django.contrib.auth.backends.ModelBackend进行身份验证,您应该可以继续使用该超级用户帐户访问您的管理页面。否则,您可以随时进入shell并将您的帐户推荐给超级用户或创建新的超级用户帐户。

*为了说明问题,身份验证后端正试图填充您的User对象和关联的对象(如果存在)。这是错误日志不够具体的情况...错误消息不是指示问题,而是您尚未实现的功能。 (访问https://docs.djangoproject.com/en/1.4/topics/auth/#storing-additional-information-about-users如果你想在1.4的更多信息关于这个功能...它已经在012的deprecated在1.5)

相关问题