中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

django2.2.6中check_password驗證失敗的解決辦法

發布時間:2021-08-26 17:53:23 來源:億速云 閱讀:174 作者:chen 欄目:大數據

本篇內容介紹了“django2.2.6中check_password驗證失敗的解決辦法”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

python3.6, django 2.2.6 AUTHENTICATION_BACKENDS 里添加自定義認證 CustomBackend(郵箱、手機號等),

用 python manage.py createsuperuser 創建的超級管理員登錄時密碼一直驗證失敗(False)

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

#!/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

# settings.py

AUTH_USER_MODEL = 'users.UserProfile'  # 重載系統的用戶,讓 UserProfile 生效

# AUTH 方法(支持郵箱、手機號等登錄), 驗證從上到下
AUTHENTICATION_BACKENDS = (
    'apps.users.backends.other.CustomBackend',
    # 'social_core.backends.weibo.WeiboOAuth3',
    # 'social_core.backends.qq.QQOAuth3',
    # 'social_core.backends.weixin.WeixinOAuth3',
    # 'social_core.backends.github.GithubOAuth3',
    # 'social_core.backends.gitlab.GitLabOAuth3',
    # 'django.contrib.auth.backends.ModelBackend',
)

刪庫重建無數次都不行,突然想到用 shell 重新設置密碼一次,果然就登錄上去了。

(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()

“django2.2.6中check_password驗證失敗的解決辦法”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

白银市| 博爱县| 万年县| 乌什县| 务川| 韩城市| 晋州市| 柞水县| 荔浦县| 惠安县| 东光县| 砚山县| 双城市| 万山特区| 莆田市| 伊宁市| 阿巴嘎旗| 昭平县| 白银市| 睢宁县| 天柱县| 迭部县| 阿拉善右旗| 长垣县| 宜良县| 洪泽县| 湖北省| 嘉善县| 通辽市| 巧家县| 上蔡县| 霍林郭勒市| 临汾市| 出国| 沙坪坝区| 惠来县| 怀仁县| 丹江口市| 靖江市| 于田县| 广东省|