当前位置: 首页 > news >正文

Django多字段认证的实现

Django多字段认证

需求:

django认证的检查用户是username,如果使用 username和 手机号验证登录。

重写:

ModelBackend 类下的 authenticate 方法

# 在对应应用下创建 utils.py""" 修改Django认证类,为了实现 username和手机号登录 """from django.contrib.auth.backends import ModelBackend
from django.db.models import Qfrom .models import Userdef get_user_by_account(account):"""通过传入的账号动态获取 user 模型对象:param account: 有可能是手机号,有可能是用户名:return: 返回user对象或None"""try:# Q查询  |:或; &:与; ~:非;user = User.objects.get(Q(username=account) | Q(mobile=account))except User.DoesNotExist as e:logger.error(f"No user found with account: {account}. Error: {e}")return Noneelse:# 这里返回的是 User 模型的一个实例(即一个用户对象),不是 User 模型类本身。return userclass UsernameModelAuthBackend(ModelBackend):# 重写 ModelBackend类下的 authenticate 方法def authenticate(self, request, username=None, password=None, **kwargs):# 获取useruser = get_user_by_account(account=username)# 判断前端传入的密码是否正确if user and user.check_password(password):logger.info(f'{user} ,authentication is successful ')# 返回userreturn user# 如果没有找到用户或密码不正确,返回 Nonelogger.warning("Authentication failed: either the user does not exist or the password is incorrect.")return None
修改setting.py
# setting.py""" 修改django认证后端类 """
# django认证的检查用户是username, 默认是 django.contrib.auth.backends.ModelBackend
# AUTHENTICATION_BACKENDS = ["django.contrib.auth.backends.ModelBackend"]
# 修改为自定义的用户验证类, 它也继承了 ModelBackend, 导包
AUTHENTICATION_BACKENDS = ['users.utils.UsernameModelAuthBackend']

相关文章:

Django多字段认证的实现

Django多字段认证 需求: django认证的检查用户是username,如果使用 username和 手机号验证登录。 重写: ModelBackend 类下的 authenticate 方法 # 在对应应用下创建 utils.py""" 修改Django认证类,为了实现 …...

【AndroidAPP】权限被拒绝:[android.permission.READ_EXTERNAL_STORAGE],USB设备访问权限系统报错

一、问题原因 1.安卓安全性变更 Android 12 的安全性变更,Google 引入了更严格的 PendingIntent 安全管理,强制要求开发者明确指定 PendingIntent 的可变性(Mutable)或不可变性(Immutable)。 但是&#xf…...

SQL进阶技巧:如何分析连续签到领金币数问题?

目录 0 题目需求 1 数据准备 2 问题分析 2.1 代码实现 2.2 代码功能分析 第一段 SQL...

1、ELK的架构和安装

ELK简介 elk:elasticsearch logstash kibana,统一日志收集系统。 elasticsearch:分布式的全文索引引擎的非关系数据库,json格式,在elk中存储所有的日志信息,架构有主和从,最少需要2台。 …...

Vue2/Vue3使用DataV

Vue2 注意vue2与3安装DataV命令命令是不同的Vue3 DataV - Vue3 官网地址 注意vue2与3安装DataV命令命令是不同的 vue3vite 与 Vue3webpack 对应安装也不同vue3vite npm install kjgl77/datav-vue3全局引入 // main.ts中全局引入 import { createApp } from vue import Da…...

汇编环境搭建

学习视频 将MASM所在目录 指定为C盘...

Android 系统 `android.app.Fragment` 类的深度定制与常见问题解析

Android 系统 android.app.Fragment 类的深度定制与常见问题解析 目录 引言Fragment 概述Fragment 的生命周期Fragment 的系统层深度定制 4.1 Fragment 的创建与初始化4.2 Fragment 的布局与视图4.3 Fragment 的通信机制4.4 Fragment 的动画与过渡4.5 Fragment 的状态保存与恢…...

linux ueditor nginx https 后台配置项返回格式出错,上传功能将不能正常使用

jsp的版本 如果出现了这个错误,上传的图标都亮起的情况,还是提示这个, 可以试试修改 uedtior.all.js 8082行 isJsonp utils.isCrossDomainUrl(configUrl); 改为 // isJsonp utils.isCrossDomainUrl(configUrl); isJsonp true; 如果还不…...

【机器学习 | 数据挖掘】时间序列算法

时间序列是按时间顺序排列的、随时间变化且相互关联的数据序列。分析时间序列的方法构成数据分析的一个重要领域,即时间序列分析。以下是对时间序列算法的详细介绍: 一、时间序列的分类 时间序列根据所研究的依据不同,可有不同的分类&#…...

uniapp H5 对接 声网,截图

文章目录 安装依赖创建容器容器样式 javascript代码ImageDataToBlob 方法 控制控制台LOG输出 安装依赖 版本"agora-rtc-sdk-ng": "^4.22.0", 创建容器 <template><view class"videoValue " id"videoValue"><u-toast…...

家谱管理系统|Java|SSM|VUE| 前后端分离

【技术栈】 1⃣️&#xff1a;架构: B/S、MVC 2⃣️&#xff1a;系统环境&#xff1a;Windowsh/Mac 3⃣️&#xff1a;开发环境&#xff1a;IDEA、JDK1.8、Maven、Mysql5.7 4⃣️&#xff1a;技术栈&#xff1a;Java、Mysql、SSM、Mybatis-Plus、VUE、jquery,html 5⃣️数据库…...

【LeetCode】200、岛屿数量

【LeetCode】200、岛屿数量 文章目录 一、并查集1.1 并查集1.2 多语言解法 二、洪水填充 DFS2.1 洪水填充 DFS 一、并查集 1.1 并查集 // go var sets int var father [90000]intfunc numIslands(grid [][]byte) int {n, m : len(grid), len(grid[0])build(grid, n, m)for i …...

idea报错:There is not enough memory to perform the requested operation.

文章目录 一、问题描述二、先解决三、后原因&#xff08;了解&#xff09; 一、问题描述 就是在使用 IDEA 写代码时&#xff0c;IDEA 可能会弹一个窗&#xff0c;大概提示你目前使用的 IDEA 内存不足&#xff0c;其实就是提醒你 JVM 的内存不够了&#xff0c;需要重新分配。弹…...

python ai ReAct 代理(ReAct Agent)

ReAct 代理&#xff08;ReAct Agent&#xff09;是一种结合了推理&#xff08;Reasoning&#xff09;和行动&#xff08;Action&#xff09;的智能代理框架&#xff0c;旨在通过交互式的方式解决复杂任务。ReAct 的核心思想是让代理在完成任务时&#xff0c;能够动态地推理下一…...

HTML入门教程|| HTML 基本标签(2)

HTML 列表 HTML列表 HTML 无序列表 ul 元素表示无序列表。 ul 元素中的项目使用 li 元素表示。 元素没有在HTML5中定义任何属性&#xff0c;并且您使用CSS控制列表的显示。 HTML5中的 type 和 compact 属性已过时。 您可以在以下代码中查看正在使用的 ul 元素。 <!D…...

MySQL root用户密码忘记怎么办(Reset root account password)

在使用MySQL数据库的的过程中&#xff0c;不可避免的会出现忘记密码的现象。普通用户的密码如果忘记&#xff0c;可以用更高权限的用户&#xff08;例如root&#xff09;进行重置。但是如果root用户的密码忘记了&#xff0c;由于root用户本身就是最高权限&#xff0c;那这个方法…...

groovy:多线程 简单示例

在Groovy中&#xff0c;多线程编程与Java非常相似&#xff0c;因为Groovy运行在Java虚拟机&#xff08;JVM&#xff09;上&#xff0c;并且可以利用Java的所有并发工具。以下是一些在Groovy中实现多线程编程的方法&#xff1a; class MyThread extends Thread {Overridevoid…...

SOME/IP 协议详解——序列化

文章目录 0. 概述1.基本数据序列化2.字符串序列化2.1 字符串通用规则2.2 固定长度字符串规则2.3 动态长度字符串规则 3.结构体序列化4. 带有标识符和可选成员的结构化数据类型5. 数组5.1 固定长度数组5.2 动态长度数组5.3 Enumeration&#xff08;枚举&#xff09;5.4 Bitfield…...

三、GIT与Github推送(上传)和克隆(下载)

GIT与Github推送&#xff08;上传&#xff09;和克隆&#xff08;下载&#xff09; 一、配置好SSH二、在Github创建仓库三、git克隆&#xff08;下载&#xff09;文件四、git推送&#xff08;上传&#xff09;文件到远程仓库 一、配置好SSH Git与Github上传和下载时需要使用到…...

18.2、网络安全评测技术与攻击

目录 网络安全测评技术与工具网络安全测评质量管理和标准 网络安全测评技术与工具 漏洞扫描技术可以用于测评&#xff0c;测评你安不安全&#xff0c;也可以用来风险评估安不安全&#xff0c;风险大不大 漏洞扫描包含网络安全漏洞扫描、主机安全漏洞扫描&#xff0c;还有数据…...

突破限制的完整方案:开源工具免费解锁Cursor Pro功能实战指南

突破限制的完整方案&#xff1a;开源工具免费解锁Cursor Pro功能实战指南 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached y…...

别再看水刊了!智能故障诊断领域投稿,这20+个SCI期刊才是你的目标(附避坑指南)

智能故障诊断领域投稿指南&#xff1a;20高价值SCI期刊与避坑策略 对于从事智能故障诊断研究的学者而言&#xff0c;选择合适的SCI期刊投稿是研究成果获得认可的关键一步。本文将系统梳理该领域的优质期刊资源&#xff0c;帮助您避开常见陷阱&#xff0c;提高投稿成功率。 1. 智…...

新手入门服务器:用快马生成你的第一个xshell等效连接程序

作为一个刚接触服务器运维的新手&#xff0c;第一次使用xshell这类工具时&#xff0c;面对各种专业术语和复杂操作确实容易一头雾水。最近我发现用InsCode(快马)平台生成学习项目特别适合入门&#xff0c;今天就分享一下如何通过可运行的代码实例来理解SSH连接的核心概念。 理解…...

工程伦理案例分析:从经典失败项目看责任分配与风险预防

工程伦理案例分析&#xff1a;从经典失败项目看责任分配与风险预防 当一座桥梁在通车典礼上轰然倒塌&#xff0c;当一栋新建大楼在台风中支离破碎&#xff0c;这些触目惊心的工程事故背后&#xff0c;往往隐藏着复杂的伦理困境。工程伦理不是简单的对错判断题&#xff0c;而是需…...

深入解析RS485接口:从硬件设计到工业应用

1. RS485接口基础解析 第一次接触RS485时&#xff0c;我也被它复杂的电气特性搞得一头雾水。直到在工厂里亲眼看到它如何稳定地穿过嘈杂的电机区域传输数据&#xff0c;才真正理解这个老牌工业接口的魅力。RS485本质上是一种差分信号传输标准&#xff0c;采用双绞线进行平衡传…...

UI设计入门指南——Figma新手必备操作全解析

1. Figma入门&#xff1a;从零到第一个设计稿 第一次打开Figma时&#xff0c;很多人会被满屏的英文界面和复杂工具栏吓到。其实我刚接触时也一样&#xff0c;但现在回头看&#xff0c;掌握基础操作只需要30分钟。Figma作为目前最流行的UI设计工具&#xff0c;最大的优势就是零门…...

效率倍增:用快马云端jupyter notebook打造可复现、易协作的数据分析流水线

效率倍增&#xff1a;用快马云端jupyter notebook打造可复现、易协作的数据分析流水线 最近在团队里做数据分析时&#xff0c;经常遇到这样的困扰&#xff1a;每次新同事加入项目&#xff0c;都要花半天时间配置本地jupyter环境&#xff1b;好不容易跑通的代码&#xff0c;换台…...

基于Dify的AI数据采集与整理工具设计与实现

基于Dify的AI数据采集与整理工具设计与实现 1. 引言 1.1 背景与需求 在信息爆炸的时代,新闻网站、人物资料库等不断产生海量数据。传统手动采集整理方式效率低下,难以满足实时性、准确性和规模化的要求。本工具旨在利用Dify平台的强大编排能力,结合AI大语言模型(LLM)和…...

Go语言实现SHA256加密的避坑指南:从常量初始化到循环优化

Go语言实现SHA256加密的避坑指南&#xff1a;从常量初始化到循环优化 在区块链、数字签名和密码保护等领域&#xff0c;SHA256算法因其高安全性被广泛应用。作为Go语言开发者&#xff0c;理解并正确实现SHA256加密不仅关乎功能实现&#xff0c;更直接影响系统性能和安全性。本文…...

W25Q64 进阶应用:从电路设计到高效存储管理的实战解析

1. W25Q64硬件电路设计实战 第一次用W25Q64做项目时&#xff0c;我在电路设计上踩过不少坑。记得有个设备频繁出现数据丢失&#xff0c;最后发现是电源滤波没做好。这个8MB容量的SPI Flash芯片虽然引脚不多&#xff0c;但每个脚的设计细节都直接影响系统稳定性。 1.1 关键引脚…...