【发布时间】:2011-02-09 13:12:08
【问题描述】:
在我的自定义身份验证后端中,我从 LDAP 响应中提取用户名、电子邮件、名字和姓氏,如果用户还不存在,则尝试将它们粘贴到新生成的用户对象中:
user = User(username=username, email=result[0][1].get('mail')[0], first_name=result[0][1].get('givenName')[0], last_name=result[0][1].get('sn')[0])
user.save()
我尝试了另一种变体:
user = User.objects.create_user(username, result[0][1].get('mail')[0])
user.first_name = result[0][1].get('givenName')[0]
user.last_name = result[0][1].get('sn')[0]
user.save()
虽然在用户首次成功进行身份验证尝试后,用户名和电子邮件显示在管理员中,但我无法显示名字和姓氏。记录来自 LDAP 响应的值表明这些值存在。
知道这里出了什么问题吗?
【问题讨论】:
-
first_name和last_name的值是否在数据库中正确显示?换句话说,您是在问如何让管理界面显示它们,还是遇到了它们甚至无法访问数据库的情况? -
很抱歉一直不清楚这一点。我刚查了一下,他们甚至没有出现在数据库中......
-
在这种情况下,我建议查看
result[0][1].get('givenName')[0]和result[0][1].get('sn')[0]究竟返回了什么,要么使用打印语句,要么放入调试器。我怀疑您在那里没有得到任何东西,但是在不了解您的设置的情况下,我无法说出原因。 (如果您想尝试调试器,pdb 非常好;在此代码附近的某处,您可以插入带有import pdb; pdb.set_trace()的行以放入其中;Googlepdb了解如何使用它的一些基础知识。) -
正如我在原始消息中所说,来自 LDAP 响应的值确实通过了。所以我怀疑我自己犯了一些愚蠢的错误(很可能)或一个错误(以前几乎没有人偶然发现过这个......)
标签: django django-admin django-authentication