在Django
默认用户验证是通过Username
和Password
集成的。在我的项目档案页面中,我可以选择更改Username
。因此,有必要在后端和前端使用email
和password
更改我的身份验证系统。Django 1.10 - 如何将用户名前端用户认证更改为电子邮件?
使用authentication backend我可以通过管理中的email
和password
更改默认身份验证系统。下面是代码 -
class EmailBackend(object):
def authenticate(self, username=None, password=None, **kwargs):
UserModel = get_user_model()
try:
user = UserModel.objects.get(email=username)
except UserModel.DoesNotExist:
return None
else:
if getattr(user, 'is_active', False) and user.check_password(password):
return user
return None
def get_user(self, user_id):
try:
return User.objects.get(pk=user_id)
except User.DoesNotExist:
return None
在settings.py
-
AUTHENTICATION_BACKENDS = (
'apps.account.email-auth.EmailBackend',
)
我不知道我怎么会在前端做认证通过。我已经通过email
和password
准备了前登录页面。
但见form.errors
和预测必须失去了任何正面认证喜欢AUTHENTICATION_BACKENDS
非常感谢您的帮助!
这里的前端auth是什么意思?无论你创建的是适用于管理员还是客户端。 – itzMEonTV
能否请你说清楚 –
请注意,在django auth的'User'中,字段'username'是唯一的,而'email'不是。您可能必须在'authenticate'中捕获'MultipleObjectsReturned'。 – schwobaseggl