2

LDAP からの地域データを使用してユーザー プロファイルを設定するように django_ldap_auth を構成しようとしています。

プロファイルのモデルを作成しました。

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

これは、この特定の User オブジェクトにプロファイル オブジェクトが関連付けられていないことを意味します。Django は自動的にプロファイル オブジェクトを作成しません。また、django-auth-ldap も作成しません。通常、Userモデルに post_save シグナル ハンドラーをインストールして、プロファイルを作成します。

https://docs.djangoproject.com/en/1.4/topics/auth/#storing-additional-information-about-usersを参照してください。

于 2012-04-23T20:06:24.363 に答える