2

我正在尝试通过 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 不关心个人资料,让我登录 :)

4

2 回答 2

2

我知道 Profile 日志看起来很吓人,但实际上它有点像红鲱鱼*。您真正的问题是您尝试使用没有员工或超级用户权限的帐户登录管理页面。鉴于您当前的设置,有两种方法可以处理该问题:

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中弃用)

于 2013-10-07T13:41:01.780 回答
1

LDAPBackend 不创建配置文件。首先尝试使用 User 模型类创建用户。在 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

于 2013-04-12T08:36:05.377 回答