设置django_auth_ldap以填充用户配置文件

时间:2012-04-23 16:48:22

标签: django ldap django-authentication

我正在尝试配置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

有什么我想念的吗?用户数据,如姓/名和电子邮件填写得很好,但区域不会。

1 个答案:

答案 0 :(得分:3)

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

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