【问题标题】:What exactly is _auth_user_id (in connection with django-auth-ldap)?_auth_user_id 到底是什么(与 django-auth-ldap 相关)?
【发布时间】:2021-08-25 14:18:04
【问题描述】:
在 Django 中,您可以在验证并登录用户后从 request.session 字典中读取 _auth_user_id。据我了解,在“正常”条件下(标准身份验证后端),它应该是用户 id (pk)。
但是当我使用django-auth-ldap 作为身份验证后端时,_auth_user_id 是什么?它返回整数,但我的 LDAP 数据库中没有这样的值。
【问题讨论】:
标签:
django
session
authentication
django-auth-ldap
【解决方案1】:
每个 Django 身份验证后端——包括 django-auth-ldap——最终在成功的身份验证时返回一个 django.contrib.auth.models.User 实例。反过来,django.contrib.sessions 只知道这些用户对象;它不知道也不关心哪个后端产生了它们。所以request.session['_auth_user_id'] 应该是一个用户pk,不管你的后端是什么。当然,为方便起见,您可以访问request.user。
如果您使用 django-auth-ldap 并且需要返回 LDAP 用户,您可以查看 request.user.ldap_user。有关详细信息和性能注意事项,请参阅文档。