我正在尝试通过ldap登录管理站点。 用户在ldap中找到。我的问题是,每次我尝试登录时,都会收到此错误。
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不关心个人资料,并让我登录:)< / p>
答案 0 :(得分: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
对象和关联的UserProfile
对象(如果存在)。这是错误日志不够具体的情况......错误消息不表示问题,而是您尚未实现的功能。 (如果您想在1.4中了解有关此功能的更多信息,请访问https://docs.djangoproject.com/en/1.4/topics/auth/#storing-additional-information-about-users ...在1.5中已经deprecated
答案 1 :(得分:1)
LDAPBackend不会创建配置文件。首先尝试使用User model类创建用户。您需要Django项目目录中的shell:
python manage.py shell
然后在Python shell中尝试:
>>> 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