Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >django2.2.6 check_password 验证失败解决办法

django2.2.6 check_password 验证失败解决办法

作者头像
KEVINGUO_CN
发布于 2020-03-17 06:08:06
发布于 2020-03-17 06:08:06
99000
代码可运行
举报
文章被收录于专栏:全栈全栈全栈全栈
运行总次数:0
代码可运行

python3.6, django 2.2.6 AUTHENTICATION_BACKENDS 里添加自定义认证 CustomBackend(邮箱、手机号等),

用 python manage.py createsuperuser 创建的超级管理员登录时密码一直验证失败(False)

# .\apps\users\backends\other.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
@author: yinzhuoqun
@site: http://zhuoqun.info/
@email: yin@zhuoqun.info
@time: 2019/10/16 18:06
"""
from django.contrib.auth import get_user_model
from django.contrib.auth.backends import ModelBackend
from django.db.models import Q
from django.contrib.auth.hashers import check_password
from apps.users.models import UserProfile

User = get_user_model()


# 用户名之外的唯一值字段也能用来登录,setting 里要有对应的配置 AUTHENTICATION_BACKENDS
class CustomBackend(ModelBackend):
    def authenticate(self, request, username=None, password=None, **kwargs):
        try:
            # 邮箱、用户名、手机号码 登录
            user = UserProfile.objects.get(Q(username=username) | Q(email=username) | Q(phone=username))
            # user_check_password = user.check_password(password)
            user_check_password = check_password(password, user.password)
            if user_check_password:
                return user
        except User.DoesNotExist:
            return None

Copy

# settings.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
AUTH_USER_MODEL = 'users.UserProfile'  # 重载系统的用户,让 UserProfile 生效

# AUTH 方法(支持邮箱、手机号等登录), 验证从上到下
AUTHENTICATION_BACKENDS = (
    'apps.users.backends.other.CustomBackend',
    # 'social_core.backends.weibo.WeiboOAuth2',
    # 'social_core.backends.qq.QQOAuth2',
    # 'social_core.backends.weixin.WeixinOAuth2',
    # 'social_core.backends.github.GithubOAuth2',
    # 'social_core.backends.gitlab.GitLabOAuth2',
    # 'django.contrib.auth.backends.ModelBackend',
)

Copy

删库重建无数次都不行,突然想到用 shell 重新设置密码一次,果然就登录上去了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(tracbug) .\tracbug>python manage.py shell
Python 3.6.3 (v3.6.3:2c5fed8, Oct  3 2017, 18:11:49) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from django.contrib.auth import get_user_model
>>> User = get_user_model()
>>> user = User.objects.get(username="yinzhuoqun")
>>> user
<UserProfile: Yinzhuoqun>
>>> user.username
'yinzhuoqun'
>>> user.set_password("xxxxxxxx")
>>> user.save() 
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-11-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
第一季 | ModelBackend 自定义用户验证,实现用户名、手机号、邮箱登录
Django REST框架构建Web API。Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。
小团子
2020/04/08
1.6K0
年薪20万Python工程师进阶(1):Django-第三方登录框架
3.数据生成,直接migrate,因为源码中的 makemigrtasion 生成的数据库迁移文件已经存在了。会生成5张socia表,不用管
Python之道
2018/08/02
6350
年薪20万Python工程师进阶(1):Django-第三方登录框架
十四、social_django 集成第三方登录
对于template中的用法,向context_processors中加入下面两个
90后小陈老师
2018/10/01
2.5K0
Django REST framework+Vue 打造生鲜超市(六) 七、用户登录与手机注册
七、用户登录与手机注册 7.1.drf的token (1)INSTALL_APP中添加 INSTALLED_APPS = ( ... 'rest_framework.authtoken
zhang_derek
2018/04/16
6.1K2
Django REST framework+Vue 打造生鲜超市(六)
		七、用户登录与手机注册
Django REST framework+Vue 打造生鲜超市(十三) 十四、social_django 集成第三方登录
目录 生鲜超市(一) 生鲜超市(二) 生鲜超市(三) 生鲜超市(四) 生鲜超市(五) 生鲜超市(六) 生鲜超市(七) 生鲜超市(八) 生鲜超市(九) 生鲜超市(十) 生鲜超市(十一) 生鲜超市(
zhang_derek
2018/04/24
2K1
Django REST framework+Vue 打造生鲜超市(十三)
		十四、social_django 集成第三方登录
Django用户认证系统组与权限(一)
apps.User.utils.mycustombackend.custombackend.CustomBackend
Autooooooo
2020/11/09
7930
【愚公系列】2022年01月 Django商城项目09-注册界面-注册功能实现
文章目录 一、注册业务逻辑 1.使用django自带的用户登录模型配置 2.UsernameMobileModelBackend校验函数源码 3.定义models类 4.登录的业务逻辑 一、注册业务逻辑 1.使用django自带的用户登录模型配置 # 允许自定义用户模型类 AUTH_USER_MODEL = 'users.User' # 修改默认的认证后端 AUTHENTICATION_BACKENDS = [ # 'django.contrib.auth.backends.ModelBacken
愚公搬代码
2022/01/14
3950
OAuth2.0 social_djan
social-auth-app-django模块是专门用于Django的第三方登录OAuth2协议模块
py3study
2020/01/19
5670
给你一个优秀的Django工程模板
经常要搭建Django的后端服务器,这里将搭建步骤记录下来,需要的同学可以参考一下,仅代表自己的编程习惯。
星星在线
2020/09/08
1.8K0
给你一个优秀的Django工程模板
使用Django实现微信公众号用户openid登录认证
最近在用Django做一个小项目,需要将微信的用户与网站的用户进行关联,由于是微信的订阅号,没有oauth网页授权的权限,只能退而求其次,在响应中获取用户的openid,来唯一的标识用户。
SingYi
2022/07/13
2.3K0
自定义 Django的User Model,扩展 AbstractUser类注意事项
本篇主要讨论一下User Model的使用技巧. 注意, 由于Django 1.5之后user model带来了很大的变化, 本篇内容只针对django 1.5之后的版本.
用户1214487
2018/10/25
6.6K0
Django+Vue开发生鲜电商平台之7.用户登录和注册功能
Github和Gitee代码同步更新: https://github.com/PythonWebProject/Django_Fresh_Ecommerce; https://gitee.com/Python_Web_Project/Django_Fresh_Ecommerce。
cutercorley
2020/07/30
4.7K0
Django+Vue开发生鲜电商平台之7.用户登录和注册功能
django 使用邮箱登录(扩展用户表、继承 AbstractUser)
# apps/users/views.py(不局限于邮箱,也可以改成 手机号码等等,但是要注意字符类型)
卓越笔记
2023/02/18
8700
Django官方文档小结(四) -- 用户及权限
Django 用户及权限 #1 环境 Python3.7.3 Django==2.0.7 #2 用户 #2.1 User对象 这里推荐使用 AbstractUser, 而不是User 使用方法 from django.contrib.auth.models import AbstractUser class UserProfile(AbstractUser): # ... 在settings.py中配置 AbstractUser AUTH_USER_MODEL = 'app名.UserProfil
Autooooooo
2020/11/09
4750
Django官方文档小结(四) -- 用户及权限
零基础使用Django2.0.1打造在线教育网站(十一):登录页面实现
努力与运动兼备~~~有任何问题可以加我好友或者关注微信公众号,欢迎交流,我们一起进步!
啃饼思录
2018/09/06
1.8K0
Django2.0中文(与其他应用交互)
1、python manage.py inspectdb 根据DB生成model 默认中已经存在DB如下: CREATE TABLE alarm_group ( group_name varchar(250) NOT NULL, group_des blob, members blob, timestamp datetime NOT NULL, on_duty blob, leader blob, PRIMARY KEY (group_name) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 运行:python manage.py inspectdb 将生成: class AlarmGroup(models.Model): group_name = models.CharField(primary_key=True, max_length=250) group_des = models.TextField(blank=True, null=True) members = models.TextField(blank=True, null=True) timestamp = models.DateTimeField()
用户5760343
2022/05/14
6840
【愚公系列】2022年01月 Django商城项目12-登录界面-登录和退出功能实现
登录和退出功能取决与是否有cookie,在页面加载时vue会自动获取cookie数据进行判断用户是否登录,进行相应展示。
愚公搬代码
2022/01/17
4610
【愚公系列】2022年01月 Django商城项目12-登录界面-登录和退出功能实现
(项目)生鲜超市(六)
  然后迁移数据库,会生成一张表authtoken_token,存放用户的token信息:
py3study
2020/01/20
1.9K0
Django+xadmin打造在线教育平台(二)
代码 github下载 三、xadmin后台管理 3.1.xadmin的安装 django2.0的安装(源码安装方式): https://github.com/sshwsfc/xadmin/tree/django2 把zip文件放到pip目录下,运行下面命令安装: pip install xadmin-django2 是文件README.rst 出现了 Unicode 解码错误,这个文件是没有什么用处的,可以新建一个同名的空白文件替换掉 首先下载zip源码包:github.com/sshwsfc/xa
zhang_derek
2018/04/11
7.1K0
Django+xadmin打造在线教育平台(二)
django rest framework之注册
我直接讲作用吧,加了这句代码,那么这句代码所在的那个模型的属性就不会再被drf 序列化,从而也不会再去生成对应的对象
Tom2Code
2022/04/15
6100
django rest framework之注册
推荐阅读
相关推荐
第一季 | ModelBackend 自定义用户验证,实现用户名、手机号、邮箱登录
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验