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']

现在可以用用户名和电话登录

源码

原文地址:https://www.cnblogs.com/junsircoding/p/15665133.html