としてはDjango docs for authentication backends settingsで説明:
をユーザーが、バックエンドは、ユーザのセッションでユーザを認証するために使用されたDjangoの格納を認証し、そしていつでもそのセッションの間、同じバックエンドを再利用した後現在認証されているユーザーへのアクセスが必要です。これは効果的に機能login(request, user, backend=None)
が使用される場合、この情報は、(django.contrib.auth.__init__.py
参照)が格納され、認証元が
実際セッションごとにキャッシュされることを意味します。ユーザーが認証された後、次のセッション情報が格納されています
SESSION_KEY = '_auth_user_id'
BACKEND_SESSION_KEY = '_auth_user_backend'
HASH_SESSION_KEY = '_auth_user_hash'
# [...]
request.session[SESSION_KEY] = user._meta.pk.value_to_string(user)
request.session[BACKEND_SESSION_KEY] = backend
request.session[HASH_SESSION_KEY] = session_auth_hash
だから、あなたはユーザーを認証するために使用されるバックエンドを見つけるためにキー_auth_user_backend
のための現在のリクエストのセッションを確認する必要があります。
ありがとうございますが、これは一般的にはうまくいくはずですが、 'settings.AUTHENTICATION_BACKENDS' **やバックエンドで認証バックエンドを設定したくない場合は、オプションの'バックエンド 'paramが' django.contrib.auth.login() '(これらの多くはありません)を呼び出すと、これは動作しません。この場合、私はうまくいけば送信されたログインとログアウト信号を受け取ることに頼らなければならず、認証バックエンドから 'request'オブジェクトを渡して正しく送信され、シグナルハンドラの' request.session'に適切なフラグを手動で設定します。 – aalizadeh