Я пишу приложение, в котором пользователь может войти в систему с 3 различными данными: клиентский ключ, имя пользователя, пароль.Каждый клиентский ключ ведет к отдельной базе данных.поэтому я написал для нее обычный пользовательский бэкэнд, но столкнулся с проблемой, которую не могу действительно решить.
Аутентификация работает нормально, пока я жестко кодирую ключ пользователя в функции get_user с помощью return User.objects.using('505473').get(pk=user_id)
, но когда я этого не делаю, я всегдаложь в моих шаблонах, когда я звоню {% if user.is_authenticated %}
.
Можно ли указать, какую БД он должен вызвать при вызове {% if user.is_authenticated %}
/ get_user?
customAuthBackend:
class CustomAuthBackend(ModelBackend):
def authenticate(self, request, username=None, password=None, **kwargs):
user = User.objects.using(request.POST['customerkey']).get(username=username)
if user is not None:
return user
def get_user(self, user_id):
try:
return User.objects.using('505473').get(pk=user_id)
except User.DoesNotExist:
return None