Django 多账号登录
Django 多账号登录
顾名思义用户既可以用用户名登录,也可以用电话号登录,如果有别的,也可以拓展
django可以自定义登录验证方法,只需要继承默认认证类,然后重写对应方法。之后在配置文件中指定一下就可以。
新建自定义认证类:
from django.contrib.auth.backends import ModelBackend
import re
from users.models import User
class MeiduoModelBackend(ModelBackend):
def authenticate(self, request, username=None, password=None, **kwargs):
# username接收的数据,既可能是用户名也可能是手机号
try:
if re.match('^1[3-9]\d{9}$', username):
# 手机号
user = User.objects.get(mobile=username)
else:
user = User.objects.get(username=username)
except:
return None
else:
# 验证密码
if user.check_password(password):
return user
else:
return None
在配置文件中指定使用自己的认证类:
# 自定义认证类型
AUTHENTICATION_BACKENDS = ['meiduo.utils.auth_backends.MeiduoModelBackend']