Получить 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 для каждой записи, которая соответствует параметрам поиска. Отличительное имя не является атрибутом.