可以在项目 app 的任意一个文件中编写这个类,之后设置一下就可以了。
比如在 users 应用下新建一个文件 users_auth.py, 添加如下内容
from django.contrib.auth.backends import ModelBackend
from django.contrib.auth import get_user_model
from django.db.models import Q
User = get_user_model()
class CustomBackend(ModelBackend):
def authenticate(self, request, username=None, password=None, **kwargs):
try:
# 通过用户名或邮箱来获取用户对象
user = User.objects.get(
Q(username=username) |
Q(email=username ) |
Q(mobile = username)
)
# 验证用户的密码
if user.check_password(password):
return user
except Exception:
return None
# 自定义登录验证类
AUTHENTICATION_BACKENDS = (
'users.users_auth.CustomBackend', # 注意后面的逗号
)