2

在 Django 中,您可以在验证并登录用户后_auth_user_idrequest.session字典中读取。正如我在“正常”条件下(标准身份验证后端)所理解的那样,它应该是用户 ID(pk)。

但是_auth_user_id当我django-auth-ldap用作身份验证后端时呢?它返回整数,但我的 LDAP 数据库中没有这样的值。

4

1 回答 1

1

每个 Django 身份验证后端——包括 django-auth-ldap——最终都返回django.contrib.auth.models.User一个成功身份验证的实例。django.contrib.sessions反过来,只知道这些用户对象;它不知道也不关心哪个后端产生了它们。因此request.session['_auth_user_id'],无论您的后端如何,都应该是 User pk。当然,作为一项规则,您会request.user为了方便而访问。

如果您使用 django-auth-ldap 并且需要返回 LDAP 用户,您可以查看request.user.ldap_user. 有关详细信息和性能注意事项,请参阅文档。

于 2012-03-03T20:21:13.960 回答