【发布时间】:2019-04-23 22:28:39
【问题描述】:
我想为客户创建一个应用程序,其中每个客户都有自己的数据库。因此作为登录信息,他们需要输入三个不同的字段:客户编号、用户名、密码。
用户名和密码应该做正常的身份验证工作,客户编号可以去正确的数据库用户表进行身份验证,我可以通过 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 %} 它都会转到默认数据库并说用户是匿名的。
我不知道解决这个问题的正确方法是我的解决方案错了吗?
【问题讨论】:
标签: django authentication multiple-databases