使用django-auth-ldap检索dn

时间:2013-08-12 15:10:45

标签: python django ldap django-auth-ldap

我正在使用django和Ldap后端编写一个Web应用程序来验证用户身份。身份验证已完成,属性映射也是使用django-auth-ldap完成的(感谢...)。 但是在Web界面中,用户需要更新一些信息,如描述,电话等......

所以我需要检索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 个答案:

答案 0 :(得分:0)

对于与搜索参数匹配的每个条目,始终从LDAP搜索操作返回专有名称(或主键)。专有名称不是属性。