check_password 密码验证抛异常not enough values to unpack (expected 4, got 2)

这篇具有很好参考价值的文章主要介绍了check_password 密码验证抛异常not enough values to unpack (expected 4, got 2)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.项目场景:

Django开发中进行用户前端输入的密码password与数据库中加密后的密码进行密码验证)


2.问题描述:

.抛异常**not enough values to unpack (expected 4, got 2)** ,定位到check_password(password,user.password)
        if not check_password(password,user.password ):
            print('密码错误')
            raise forms.ValidationError({'password':'密码错误'})

3. 解决过程:

第一步,首先复习相关方法语法和源码定义用法

加密:make_password(text, None, ‘pbkdf2_sha256’)
验证方法: check_password(参数1, 参数2)
返回值: True或False
参数: 参数1:原始密码,参数2: 数据库查询出的密码
使用:
check_password(‘1234567890’, sha_pwd )
如果为: True: 表示密码相同,如果为:False,则表示密码不相同

参考链接:https://blog.csdn.net/yinhangxitong36/article/details/79554091

反复检查没毛病,参数顺序没错,点进去看源码比对也没发现什么问题,修改了以下加密算法重新注册后验证也没解决。
pbkdf2_sha256
pbkdf2_sha1
bcrypt_sha256
第二步,. 换个环境模拟,
在shell终端
模拟了一遍却可以跑通。排除了所有可能,唯一可能的就是加密后密码在 存储的时候发生了变化
check_password 密码验证抛异常not enough values to unpack (expected 4, got 2)

4. 原因分析:

检查数据库中自己设计的 user表 发现所有注册的密码加密后存储的都是下边图片所示,而django自己创建的author_user存储的密文要长。所以很有可能是数据库表设计出了问题,密码的字符长度不够
check_password 密码验证抛异常not enough values to unpack (expected 4, got 2)
check_password 密码验证抛异常not enough values to unpack (expected 4, got 2)

5. 解决方法:

把密码字段的长度加长设置到200
check_password 密码验证抛异常not enough values to unpack (expected 4, got 2)
在前端输入用户名密码登录 验证成功跳转到首页
check_password 密码验证抛异常not enough values to unpack (expected 4, got 2)文章来源地址https://www.toymoban.com/news/detail-405551.html


到了这里,关于check_password 密码验证抛异常not enough values to unpack (expected 4, got 2)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • DefaultCPUAllocator: not enough memory: you tried to allocate

    DefaultCPUAllocator: not enough memory: you tried to allocate XXX 问题:系统内存不足。 解决方案(1):重启电脑/使用任务管理器关闭多余应用释放系统内存(临时方案) 任务管理器启用方式:ctrl+alt+del 到达进程页面-右键进程结束任务 解决方案(2):增加电脑虚拟内存(建议选该方案

    2024年02月12日
    浏览(39)
  • git pull报没有足够内存 not enough memory for initialization

            git clone 或 git pull 批量同步远程 git仓库代码时,报 没有足够内存用于初始化   not enough memory for initialization 。经过观察 资源管理器 的内存使用情况,发现为 剩余可用内存不足造成的。加物理内存麻烦,可通过适当调整  分页文件(虚拟内存) 最大可用值 解决。 目

    2024年02月16日
    浏览(40)
  • RuntimeError: DefaultCPUAllocator: not enough memory: you tried to allocate 1105920 bytes.

    问题 RuntimeError: [enforce fail at ..c10coreCPUAllocator.cpp:76] data. DefaultCPUAllocator: not enough memory: you tried to allocate 1105920 bytes. 今天在使用自己电脑跑YOLOV7的时候,因为自己没有GPU所以使用CPU来跑测试模型,使用CPU来进行一张独立的图像进行预测,跑一张图像完全没有问题,非常的ni

    2023年04月13日
    浏览(40)
  • 解决报错ValueError: not enough values to unpack (expected 3, got 2)

    错误提示: 在使用opencv进行关键点识别、边缘轮廓提取的时候,提示以上错误,报错原因是函数定义的返回值数量和调用函数时实际赋予的返回值数量不一致。导致这个问题,实际是因为opencv版本不一致引起的,新版opencv(opencv4)在调用findContours时只需要两个参数,需要删

    2024年02月11日
    浏览(50)
  • Error occurred during initialization of VM Could not reserve enough space for 2097152KB object heap

    在启动elasticsearch.bat时会直接闪退,大概率是因为内存分配不足导致直接打不开elasticsearch。 于是我直接在终端运行,想看问题出在哪,此时报错如题所示 找到elasticsearch文件夹下config子文件夹,打开找到 jvm.options ,对内存分配进行调整 使用记事本或者Notepad++打开,如图: 这

    2024年02月07日
    浏览(39)
  • ES集群不通,日志报[node-3] not enough master nodes discovered during pinging (found [[Candidate{node={node-3

    最近通过docker搭建es集群,全部启动后,通过es-head查看集群状态发现没有节点显示。查看日志发现一下报错: 发现节点之间的9300端口ping不通,初次搭建没有经验,一通百度后有如下尝试思路: 1.关闭防火墙, 2.修改配置文件的data和log路径 3.确认配置节点ip地址是否错误,

    2024年02月13日
    浏览(48)
  • 基于【GO】的cmf_password加密密码的逻辑,和校验密码逻辑

    导入必要的包: 这里导入了一些标准库的包,用于生成随机数、计算SHA-256哈希和处理十六进制编码。 main 函数: 在 main 函数中,首先定义了要加密的原始密码 password 。 使用 generateSalt 函数生成一个随机的盐值 salt 。 然后,使用 hashPassword 函数将原始密码和盐值一起加密,生

    2024年02月09日
    浏览(34)
  • Oracle 登录异常: invalid username/password; logon denied

    首先说一下,这个问题并不是用户名与密码有问题,而是权限的问题 说到这里又要说一下,CSDN不是我们唯一的出现问题找解决方式的地方,不妨试试其他的解答平台,(因为我去找这个问题答案的时候csdn上都是收费的,我就去百度上搜了搜,也是有答案的) 这个问题出现的大概原因就是

    2023年04月09日
    浏览(37)
  • xshell连接liunx服务器身份验证不能选择password

    使用密码通过Workbench或SSH方式(例如PuTTY、Xshell、SecureCRT等)远程登录ECS实例时,遇到 服务器禁用了密码登录方式错误. 该问题是由于SSH服务对应配置文件 /etc/ssh/sshd_config 中的参数 PasswordAuthentication 被设置为 no ,表示禁止以密码方式登录ECS实例,需要修改为 yes 。 您可以根据业

    2024年02月14日
    浏览(31)
  • Unity “Failed to create agent because it is not close enough to the NavMesh“警告 并由此引发的问题

    这个报错表示的意思是:NavMeshAgent所在节点未放置在寻路网格上 从最基本的理解上,就是说你的角色,或者某个 agent 没有在导航的地形上, 最关键的是:由此引发的报错: \\\"SetDestination\\\" can only be called on an active agent that has been placed on a NavMesh. 导致角色无法移动。 我找了很久

    2024年02月13日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包