首页 > 其他分享 >关于继承djangon内置模型AbstractUser用户认证authenticate一直返回None

关于继承djangon内置模型AbstractUser用户认证authenticate一直返回None

时间:2024-06-08 19:11:36浏览次数:14  
标签:AbstractUser None 自定义 auth 认证 djangon user django

为了想要使用django内置的auth_user表字段,但是有些字段没有,想要定制于是我们可以:

首先导入:

from django.contrib.auth.models import User, AbstractUser
from django.db import models 然后这么写:
class UserInfo(AbstractUser):
    """
    用户信息
    """
    nid = models.AutoField(primary_key=True)
    telephone = models.CharField(max_length=11, null=True, unique=True)

    def __str__(self):
        return self.username

然后你会发现:

这是djang的认证模块

导入:

from django.contrib import auth user = auth.authenticate(request,username=user_name, password=pwd) 这么写你会发现一直返回None,因为使用自定用户模型,也就是你自己创的表 当你创建自定义用户模型的时候,并且设置了AUTH_USER_MODEL的时候,django不会提供默认User模型,也就不会创建对应的数据库表,由于连表都没有创建所以这时候使用django的authenticate一直会返回空None,由于此时不再是django中内置模型User,那么必须使用自定义后端认知处理 解决方法: 在你的应用下面创建这么一个文件,backends.py
#自定义后端认证组件
from django.contrib.auth.backends import BaseBackend
from blogProject.models import UserInfo

class CustomAuthBackend(BaseBackend):
    def authenticate(self, request, username=None, password=None, **kwargs):
        try:
            user = UserInfo.objects.get(username=username)
            if user.check_password(password):
                return user
        except UserInfo.DoesNotExist:
            return None

  那么django就会使用你自定义认证了,最后一部还需设置

在你的项目的 settings.py 文件中,指定使用自定义的认证后端来处理用户认证请求。

加上:

AUTHENTICATION_BACKENDS = [
'yourapp.backends.CustomAuthBackend',
# 其他认证后端...
]

标签:AbstractUser,None,自定义,auth,认证,djangon,user,django
From: https://www.cnblogs.com/Gaze/p/18238863

相关文章

  • 【OpenCV函数详解之cv2.calcOpticalFlowPyrLK(old_gray, frame_gray, p0, None, **lk_
    文章目录cv2.calcOpticalFlowPyrLK()函数介绍:函数定义:参数说明:返回值示例代码执行结果:**总结:**p1,st,err=cv2.calcOpticalFlowPyrLK(old_gray,frame_gray,p0,None,**lk_params)解释:函数:参数:返回值:使用:cv2.calcOpticalFlowPyrLK()函数介绍:cv2.calcOpti......
  • Vitis HLS 学习笔记--块级控制协议-ap_ctrl_chain/ap_ctrl_hs/ap_ctrl_none
    目录1.简介2.详细分析2.1使用场景区别2.2 ap_continue行为详解2.3 ap_ctrl_chain行为详解3.总结1.简介块级控制协议允许硬件模块表明:何时可以开始处理数据。何时完成了数据处理。以及何时处于空闲状态,准备接受新的数据输入。这些信号用于本模块在与其他硬......
  • ubuntu22 python2 pyinstaller 打包报错:'NoneType' object has no attribute 'groups'
    前言最近有个需求,需要在ubnutu22上使用pyinstaller打包一个python2的文件。中间遇到了一些问题:pip2installpyinstaller报错解决方案:pip2installpyinstaller==3.6python2和python3的pyinstaller如何同时存在,我想把python2的pyinstaller命名为pyin......
  • TextClip构造方法报OSError:MoviePy creation of None failed because of the followi
    在使用moviepy的构造方法创建实例时报错:这可能是两个原因导致的:未安装ImageMagick应用ImageMagick是一套功能强大、稳定而且开源的多平台工具集和开发包,可以用来读、写和处理超过200种基本格式的图片文件,包括PNG,JPEG,GIF,HEIC,TIFF,DPX,EXR,WebP,Postscript,PDF和SVG等格式。利用ImageM......
  • docker网络配置:bridge模式、host模式、container模式、none模式
    在docker平台里有四种网络模式,今天继续分享一下它们的常用知识,进一步加深对docker技术的理解。1、docker网络模式分类dockerrun创建Docker容器时,可以用--net选项指定容器的网络模式,Docker主要有以下4种网络模式。bridge模式:--net=bridge如果不指定的话默认设置。host模式......
  • python使用pip安装模块出错 Retrying (Retry(total=0, connect=None, read=None, redi
    问题:在使用python时,使用pip安装psutil出错(pipinstallpsutil),错误信息:Retrying(Retry(total=0,connect=None,read=None,redirect=None,status=None))afterconnectionbrokenby‘SSLError(SSLError(1,u’[SSL:CERTIFICATE_VERIFY_FAILED]certificateverifyfailed......
  • centos7 Packstack allinone安装openstack
    centos7Packstackallinone安装openstackPackstack是一种用于自动化部署OpenStack环境的工具,它可以快速安装和配置OpenStack的各个组件,同时提供了一些默认设置以方便快速上手。All-in-One模式是Packstack的一种安装模式,它在一台物理或虚拟机上部署了所有OpenStack的核心组件,包......
  • Druid连接池问题:discard long time none received connection.
    啊啊啊啊啊啊啊~~~我真的服了找bug找到发疯百度也找不到,gpt也问不到,最后就是我重新打开视频看着敲了一遍,最后发现......我**忘记加注解了(......
  • display: none与visibility: hidden的区别
    display:none首先我们来看W3C中对display:none的描述:'none'​The element anditsdescendantsgenerateno boxes or textsequences.​Similarly,ifa textnode isdefinedtobehaveas display:none,itgeneratesno textsequences.Elementswitheit......
  • 微信小程序设置hover-class="none"无效的解决方法
    如上,切换自定义菜单栏,tab会出现点击状态,设置hover-class="none"无效。其实这个问题其实很简单,简单到都想不到,看下出现点击态的组件样式,大概率应该是有设置 cursor:pointer; ,删除掉就好了,问题解决。来看下cursor: pointer;其实这个通常是使用在PC端的,当光标移动到链接导航上......