Получить dn с помощью django-auth-ldap

Я пишу веб-приложение с django и бэкэндом Ldap для аутентификации пользователей. Аутентификация выполнена, и сопоставление атрибутов также выполнено с помощью django-auth-ldap (спасибо...). Но в веб-интерфейсе пользователям необходимо обновить некоторую информацию, такую ​​как описание, телефон и т. Д.

Поэтому мне нужно получить атрибут dn для обновления текущего пользователя, а не другого. Я пытаюсь сопоставить отличительное имя с атрибутом, но не работает... Есть идеи?

Пожалуйста, найдите ниже текущий код.

settings.py:

AUTH_LDAP_USER_ATTR_MAP = {
"dn" : "ldap_user.dn",
    "name": "cn",
    "description": "description",
    "employeeType": "employeeType",
    ... }

но без результатов...

И я пытаюсь также написать, на мой взгляд:

def update_description(request):
if request.method == "POST":
    form = DescriptionUpdateForm(request.POST)
    if form.is_valid():
        description = form.cleaned_data['description']
        user = request.user
        old_description = user.description
        user.description = description
        user.save()
        try:
            l = ldap.initialize(settings.AUTH_LDAP_SERVER_URI)
            l.simple_bind_s(settings.AUTH_LDAP_BIND_DN, settings.AUTH_LDAP_BIND_PASSWORD)
            user_ldap_dn = LDAPBackend().django_to_ldap_username(user.email).dn
            l.unbind_s()
        except ldap.LDAPError, e:
            print e
    return HttpResponseRedirect('/user/profile')
else:
    form = DescriptionUpdateForm()

return render(request, 'edit_description.html', {'form': form,})

Но нет результата, я не могу получить запись dn для этого пользователя...

Заранее спасибо, Лоик.

1 ответ

Отличительное имя (или первичный ключ) всегда возвращается из операции поиска LDAP для каждой записи, которая соответствует параметрам поиска. Отличительное имя не является атрибутом.

Другие вопросы по тегам