2

プロジェクトにdjango-ldap-authを実装しようとしていますが、すべて正常に動作しているようです。user profile問題は、そのパッケージが1.7 より新しいバージョンの Django のフィールド作成をサポートしていないことです。

ドキュメントから:

注 Django 1.7 以降では、ユーザー プロファイルを直接サポートしていません。これらのバージョンでは、LDAPBackend はプロファイル関連の設定を無視します。

これを追加しましたsettings.pyが、何も起こりません(予想どおり):
AUTH_LDAP_PROFILE_ATTR_MAP = {"description": "description"}

AUTH_LDAP_PROFILE_ATTR_MAP私の質問は:新しい django バージョンで有効にするにはどうすればよいですか?

編集:カスタムユーザーモデルの使用を考えていますが、それが最善の方法かどうかはわかりません..

4

1 に答える 1

5

によって発行された信号を使用one-to-one User profile modelしてこれを解決しました。populate_userdjango-ldap-auth

コード

from __future__ import unicode_literals
import django_auth_ldap.backend
from fences.models import Profile
from django.db import models

def populate_user_profile(sender, user=None, ldap_user=None, **kwargs):
  temp_profile = None
  bucket = {}

  try:
      temp_profile = user.profile
  except:
      temp_profile = Profile.objects.create(user=user)

  bucket['street_address'] = ldap_user.attrs.get('streetAddress')
  bucket['telephone_number'] = ldap_user.attrs.get('telephoneNumber')
  bucket['title'] = ldap_user.attrs.get('title')

  for key, value in bucket.items():
      if value:
          setattr(user.profile, key, value[0].encode('utf-8'))
  user.profile.save()

django_auth_ldap.backend.populate_user.connect(populate_user_profile)
于 2016-10-24T22:01:54.377 に答える