Аутентификация Django на разных базах данных - PullRequest
0 голосов
/ 16 октября 2018

Я хочу создать приложение для клиентов, где у каждого клиента есть своя БД.Таким образом, в качестве данных для входа в систему им необходимо ввести три различных поля: номер клиента, имя пользователя, пароль.

Имя пользователя и пароль должны выполнять обычные функции аутентификации, а номер клиента находится там, чтобы перейти к нужной таблице пользователей базы данных для аутентификации.Можно перейти к другим базам данных с помощью метода using (), но как вы аутентифицируете пользователя с помощью подходящей базы данных?

1 Ответ

0 голосов
/ 16 октября 2018

Вы должны написать пользовательский бэкэнд аутентификации, как показано ниже, и он должен быть указан в settings.py с помощью ключа AUTHENTICATION_BACKENDS. Django doc

from django.contrib.auth.backends import ModelBackend
class CustomAuthBackend(ModelBackend):
    def authenticate(self, request, username=None, password=None, **kwargs):
        user = User.objects.using(request.GET['CUSTOMER_TABLE']).filter(username=username)
        if user.check_password(password) and self.user_can_authenticate(user):
            return user
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...