認証は資格情報のみを受け取り、ユーザーを取得するまでバックエンドで認証を呼び出すためのショートカットです。
https://github.com/django/django/blob/master/django/contrib/auth/init.py#L39 _ _
デフォルトのバックエンド ( https://github.com/django/django/blob/master/django/contrib/auth/backends.py#L4 )を使用していると仮定すると、このバックエンドを使用して非デフォルトのデータベースだと思います。
from django.contrib.auth.backends import ModelBackend
class NonDefaultModelBackend(ModelBackend):
"""
Authenticates against django.contrib.auth.models.User.
Using SOMEOTHER db rather than the default
"""
supports_inactive_user = True
def authenticate(self, username=None, password=None):
try:
user = User.objects.using("SOMEOTHER").get(username=username)
if user.check_password(password):
return user
except User.DoesNotExist:
return None
def get_user(self, user_id):
try:
return User.objects.using("SOMEOTHER").get(pk=user_id)
except User.DoesNotExist:
return None
これにより、デフォルトのバックエンドと同じ動作が得られると思いますが、デフォルト以外のデータベースを使用します。次に、バックエンドを設定に追加するか、デフォルトのバックエンドを完全に置き換えることができます.
AUTHENTICATION_BACKENDS = (
'path.to.mybackends.NonDefaultModelBackend',
'django.contrib.auth.backends.ModelBackend',)
とか、ぐらい。