【发布时间】:2019-08-12 22:04:42
【问题描述】:
我用 o2o 关系模型 (UserProfile) 扩展了用户模型。我想使用电子邮件/密码而不是用户名/密码登录。所以我定制了身份验证后端。
使用这种身份验证方式登录是否容易受到攻击?
from django.contrib.auth import get_user_model
from django.contrib.auth.backends import ModelBackend
class EmAuth(ModelBackend):
def authenticate(self, request, username=None, password=None, **kwargs):
UserModel = get_user_model()
try:
user = UserModel.objects.get(email=username)
except UserModel.DoesNotExist:
return None
else:
if user.check_password(password):
return user
return None
def get_user(self, user_id):
UserModel = get_user_model()
try:
return UserModel.objects.get(pk=user_id)
except UserModel.DoesNotExist:
return None
【问题讨论】: