django自定义用户认证

分类: Python 作者: 浏览:32 时间:2019年5月3日 15:37 评论:0

django默认后台登录只能通过用户名登录,如果想要通过用户名或者邮箱登录,那就需要自定义后台验证了
在自定义的用户模型(Accounts)中新建backends.py

from django.contrib.auth.backends import ModelBackend  
from django.db.models import Q  
from django.contrib.auth import get_user_model  
from django.contrib.auth.models import Permission  

User = get_user_model()  


class CustomBackend(ModelBackend):  
    """自定义后台验证"""  

    def authenticate(self, request, username=None, password=None, **kwargs):  
        # 重写authenticate方法  
        user = User.objects.filter(Q(username=username) | Q(email=username)).first()  
        if user:  
            if user.check_password(password):  
                return user  
        return None  

在项目中的settings.py文件中增加自定义认证引用路径

# 增加自定义后台验证路径  
AUTHENTICATION_BACKENDS = (  
    "accounts.backends.CustomBackend",  
    # django.contrib.auth.backends.ModelBackend  
    # 注释的是django自带的后台认证,这里修改为自己写的路径  

)  

参考文档

赞(0)

评论(0)

  • 暂无评论