2

我正在尝试配置 django_ldap_auth 以使用来自 LDAP 的区域数据填充用户配置文件:

我为配置文件创建了一个模型:

from django.db import models
from django.contrib.auth.models import User
class profile(models.Model):
    user = models.ForeignKey(User, unique=True)
    region = models.CharField(max_length=128, null=True, blank=True)

    def __unicode__(self):
        return '{0} profile'.format(self.user.username)

    class Meta:
        app_label = 'core'

我将设置配置为映射到 'l' LDAP 属性(这就是在 LDAP 中标记区域的方式)

AUTH_PROFILE_MODULE = 'core.profile'
 AUTH_LDAP_PROFILE_ATTR_MAP = {"region": "l"}

这可能很重要,配置文件类位于 app/models/UserProfile.py 文件中,并且 models/ init .py 有from UserProfile import profile声明。

但是,我仍然在调试中收到以下消息,并且配置文件不会填充:

search_s('dc=*****,dc=ru', 2, '(sAMAccountName=******)') returned 1 objects: CN=Болотнов Александр,OU=****,OU=****,DC=***,DC=ru
Populating Django user *****
Django user **** does not have a profile to populate

有什么我想念的吗?诸如名字/姓氏和电子邮件之类的用户数据可以很好地填充,但区域不会。

4

1 回答 1

3

这意味着这个特定的用户对象没有关联的配置文件对象。Django 不会自动创建配置文件对象,django-auth-ldap 也不会。通常,您将在模型上安装 post_save 信号处理程序User以创建配置文件。

请参阅https://docs.djangoproject.com/en/1.4/topics/auth/#storing-additional-information-about-users

于 2012-04-23T20:06:24.363 回答