从Active Directory提取用户数据时扩展用户模型

时间:2019-11-21 06:53:19

标签: django django-models active-directory ldap

我正在使用django_python3_ldap连接到活动目录。我可以导入用户并对其进行同步,以确保已经在AD中的用户可以登录到应用程序而无需单独的凭据。

但是,问题是,除了用户名,名字,姓氏和电子邮件外,我还想从广告中导入电话和办公室位置。但是,仅添加这些字段会导致同步中断。我从各种教程中读到,我应该 extend 扩展Django用户模型,但是该库使用的导入不支持扩展的一对一值。我对完全取代django用户模型没有信心,因此,有什么好的方法可以扩展用户模型以包括这些字段?

1 个答案:

答案 0 :(得分:0)

感谢ErickLavault,我得以解决此问题。对于以后再来的人,这就是我的做法。

创建一个新模型并使其继承AbstractUser。然后,我只添加了我想要的新字段。

from django.db import models
from django.contrib.auth.models import AbstractUser


class User(AbstractUser):
    office = models.CharField('office', max_length=40, blank=True)
    phone_number = models.CharField('phone_number', max_length=40, blank=True)

然后,我通过在LDAP部分之前添加以下行,在settings.py中用此新模型对默认模型进行了替换

AUTH_USER_MODEL = 'authentication.User'

身份验证为应用名称,用户为我要使用的模型

这使我可以保留与基本Django用户模型相同的功能,同时可以按需要扩展类属性。