2

Djangoでは、ユーザーを認証してログインした後、辞書_auth_user_idから読み取ることができます。request.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']、バックエンドに関係なく、ユーザー pk である必要があります。もちろん、request.user便宜上アクセスするのが原則です。

django-auth-ldap を使用していて、LDAP ユーザーに戻る必要がある場合は、request.user.ldap_user. 詳細とパフォーマンスに関する考慮事項については、ドキュメントを参照してください。

于 2012-03-03T20:21:13.960 に答える