我在自定义用户模型中设置了 USERNAME_FIELD="email"。 我创建了自定义后端身份验证类。 代码如下:
class EmailBackend(ModelBackend):
def authenticate(self, request, username=None, password=None, **kwargs):
UserModel = get_user_model()
try:
user = UserModel.objects.get(
Q(employee_id=username) | Q(email=username) | Q(phone=username)
)
except UserModel.DoesNotExist:
return None
return user if user.check_password(password) else None
def get_user(self, user_id):
try:
UserModel = get_user_model()
user = UserModel.objects.get(pk=user_id)
except UserModel.DoesNotExist:
return None
return user if self.user_can_authenticate(user) else None
我只能用电话号码和employee_id登录(仅当employee_id作为数值输入时,例如1234,否则也不能用它登录)。 对于其他两个它显示错误:int() 的无效文字以 10 为基数