Django check_password() 总是返回 False

2023-12-09

我有一个与 NodeJs 应用程序一起使用的现有数据库,现在相同的数据库将用于使用 Django 构建的新应用程序。 我有一个 user_account 表,用于存储用户登录凭据以及密码加密bcrypt模块已被使用。密码存储在字段 user_password 中

我已经扩展了 Django Users 模型并覆盖了它authencticate方法,效果很好。 对于密码验证我正在使用bcrypt method bcrypt.checkpw(password, hashed)这也工作正常。

Problem:我想使用 djangouser.check_password(password)代替bcrypt.checkpw(password, hashed)。因为它可以省去在密码匹配之前生成盐和编码的痛苦,而且最重要的是,它是一种用于唯一目的的内置方法。

import bcrypt
from django.contrib.auth.hashers import check_password

#password = plain text password entered by user at login
#hashedPassword = Password stored in db (fieldName: user_password)
check_password(password, hashedPassword) #It returns False

user.check_password(password) # It also returns False

#for same password
bcrypt.checkpw(password, hashedPassword) # returns True

#hashedPassword format $2b$12$NNVaNL2Zla0E/WwC6Mkjjer6Qh3zIBCN6kMl9qxLE/xxyt4NAgXMq

我在用姜戈2.1 and Python 3.6

我已经检查过相关问题,但所有问题都与表单有关,而且我没有使用任何 django 表单。

My settings.py哈希器如下

PASSWORD_HASHERS = [
    'django.contrib.auth.hashers.BCryptSHA256PasswordHasher',
    'django.contrib.auth.hashers.BCryptPasswordHasher',
    'django.contrib.auth.hashers.PBKDF2PasswordHasher',
    'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
    'django.contrib.auth.hashers.Argon2PasswordHasher',
]

输入法是一个简单的django模板

<div class='col-md-12'>
  <form action='/auth/login' method='post'>
    {% csrf_token %}
    <div class='form-group row'>
      <label for='email'>Email</label>
      <input type='email' class='form-control' id='email' name='username'>
    </div>
    <div class='form-group row'>
      <label for='password'>Password</label>
      <input type='password' class='form-control' id='password' name='password'>
    </div>
    <div class='form-group row'>
      <button class='btn btn-outline-secondary' type='submit'>Log in</button>
    </div>
  </form>
</div>

Django 不存储原始哈希值,它们以算法为前缀(请参阅文档).

如果没有前缀,Django 将无法识别正确的哈希器。如果你看一下来源check_password,你会看到它返回False如果它无法识别密码哈希器。

最干净的解决方案可能是自定义身份验证后端有用途bcrypt.checkpw直接地。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django check_password() 总是返回 False 的相关文章

随机推荐

  • 如何使用反向代理来绕过 X-Frame-Options: SAMEORIGIN for iframe

    我正在努力解决某些页面上的 X Frame Options SAMEORIGIN 限制 以便我可以将它们放入 iframe 中 我知道可以使用反向代理服务器来解决这个问题 但我不确定如何做 我需要的是为一些大厅监视器创建一个触摸屏界面 这些
  • Apache Ant 与 Graal VM

    我们将 Apache Ant 与 Nashorn JavaScript Engine 结合使用 该引擎在 jdk 15 及更高版本中已弃用并删除 我试图找到如何从 Nashorn 切换到 Graal VM 但即使在 Apache 网站上也没
  • WebView方向改变问题

    我有一个下面的布局 其中有一个以重力为中心的线性布局 以使子项居中对齐 我想以编程方式添加一个 webview 并在其中加载 youtube 视频 问题是 webview 的高度和宽度是wrap content wrap content 因
  • docker CMD 中的命令替换

    Using CMD pipenv venv bin python3 main py root uploads 导致错误docker run Error response from daemon invalid header field va
  • Laravel 5.1 中的表单验证异常没有被异常捕获?

    在 laravel5 中 我捕获了所有错误app Exceptions Handler render功能并且工作正常 下面给出的代码 public function render request Exception e error resp
  • 使用 Python 将 PDF 转换为图像 [重复]

    这个问题在这里已经有答案了 我正在尝试在我安装的 ubuntu 服务器中将 pdf 文件转换为图像文件 蟒蛇2 7 poppler 工具 pdf2image 1 12 1 My code from pdf2image import conv
  • Java 易失性关键字

    我知道有很多关于 volatile 的问题 但我只是从这个讨论中感到困惑 Java 挥发性如何保证这段代码中 数据 的可见性 我读过的每个网站都说变量可以存储在缓存中 使该值对其他线程不可见 我什至找到了这个例子https dzone co
  • 在 GCC/CLang 自动矢量化中强制对齐加载/存储的对齐属性

    众所周知 GCC CLang 使用 SIMD 指令可以很好地自动向量化循环 还已知存在对齐 标准 C 属性 除其他用途外还允许对齐堆栈变量 例如以下代码 在线尝试一下 include
  • Fragment Intermediate(I):从edittext获取输入,在fragment的textview中设置文本

    真的需要一些建议 不知道这里出了什么问题 语境 2 个片段 每个片段都有一个 Textview 主要活动有 2 个按钮和一个编辑文本 目的 在主活动的编辑文本框中输入 hello 并 当单击片段 1 的按钮时 文本视图将更改为 hello
  • 无法使用 create-react-app 和 docker windows 进行 webpack 热重载

    我们将使用 dockersetup 开发一个 React PWA 并在部署到 master 分支期间将应用程序发布到 gitlab 页面上 我在 Windows 设备上工作 无法在开发模式下获得热重载功能 每当我进行一些更改时 代码都不会重
  • 通过 JQuery 验证插件单击同一 HTML 表单中的不同按钮来验证不同字段

    例如假设我在表单中有两个文本框 A B 和两个按钮 C D 然后我希望在单击按钮 C 时 如果只有文本框 A 有效 则表单有效 并且在单击按钮 D 时 如果只有文本框 B 有效 则表单有效 有谁知道如何做到这一点 使用忽略选项 form v
  • Python 中块之前的冒号的作用是什么?

    Python 中块之前的冒号的作用是什么 Example if n 0 print The end 冒号用于声明缩进块的开始 从技术上来说 这是没有必要的 当块完成时 您可以缩进和取消缩进 然而 基于Python 公案 显式优于隐式 EIB
  • 在 Python 中打开 SSL 套接字连接

    我正在尝试在 Python 中建立安全套接字连接 但我在 SSL 方面遇到了困难 我找到了一些如何使用 SSL 建立连接的代码示例 但它们都涉及密钥文件 我尝试连接的服务器不需要接收任何密钥或证书 我的问题是如何使用 SSL 封装 pyth
  • 为什么 CMFCMenuBar 不使用加速器表?

    在使用 VS2008 的文档 视图项目中 MFC菜单栏似乎从项目中加载了正确的菜单资源 IDR MAINFRAME 因为添加和删除菜单项反映在菜单的 UI 中 它甚至将加速器附加到默认菜单项 例如 Ctrl O 附加到 打开 项 但是 加速
  • 如何终止我的应用程序的远程进程?

    我们的应用程序使用此方法来终止远程进程 但可以使用其他计划吗 我需要这个因为getRunningAppProcesses 可能不起作用 public void killChildProcess ActivityManager actvity
  • Facebook Messenger 应用程序无效范围 - 权限:pages_messaging_subscriptions

    我正在尝试将 Facebook Messenger 应用连接到我的一个页面 我之前已将 Facebook Messenger 应用连接到页面 但这是我第一次收到此错误 是什么赋予了 这是一个bug我们目前正在努力 同时 请使用我们的测试版或
  • 如何避免多次AJAX调用?

    我使用以下代码通过 AJAX 提交表单 form submit function e ajax type POST url ajax url dataType json data action my action str form seri
  • 了解反汇编的 C 代码(特别是像 var_28 = dword ptr -28h 之类的东西)(二进制炸弹实验室)

    所以我正在反汇编一些代码 二进制炸弹实验室 并需要一些帮助来弄清楚发生了什么 这是 IDA 屏幕截图 下面有一些跳转表的内容和另一个比较 但我对这些内容感觉更舒服 我认为 现在 我想我知道这个阶段发生了什么 正如我所读到的 http tea
  • 根据部分标签更改饼图的颜色(pandas/matplotlib)

    我正在使用一个名为的 DataFrameplot df看起来像这样 Country Visual Format 0 France DEFAULT 4 378900e 03 1 France DIGITAL3D 1 170000e 02 2
  • Django check_password() 总是返回 False

    我有一个与 NodeJs 应用程序一起使用的现有数据库 现在相同的数据库将用于使用 Django 构建的新应用程序 我有一个 user account 表 用于存储用户登录凭据以及密码加密bcrypt模块已被使用 密码存储在字段 user