Я хочу создать приложение для клиентов, где у каждого клиента есть своя БД.Таким образом, в качестве данных для входа в систему им необходимо ввести три различных поля: номер клиента, имя пользователя, пароль.
Имя пользователя и пароль должны выполнять обычные функции аутентификации, а номер клиента находится там, чтобы перейти к нужной таблице пользователей базы данных для аутентификации.можно перейти к другим базам данных с помощью функции using ().
class CustomAuthBackend(ModelBackend):
def authenticate(self, request, username=None, password=None, **kwargs):
user = CustomUser.objects.using(request.POST['kundennr']).get(username=username)
if user.check_password(password) and self.user_can_authenticate(user) :
try:
user = CustomUser.objects.using(request.POST['kundennr']).get(username=username)
return user
except User.DoesNotExist:
return None
def get_user(self, user_id):
try:
return CustomUser.objects.get(pk=user_id)
except User.DoesNotExist:
return None
Функция аутентификации работает нормально, поэтому проблема, с которой я сталкиваюсь, - это функция get_user, я полагаю, потому что функция get_user не имеет запроса, где я могу определить, какаябаза данных, которую он должен вызвать.потому что каждый раз, когда я звоню {% if user.is_authenticated %}
, он идет в базу данных по умолчанию и говорит, что пользователь является анонимнымЯ не знаю, как правильно решить эту проблему, мое решение просто неверно?