gpt4 book ai didi

python - Django User.check_password 不会通过密码检查

转载 作者:太空狗 更新时间:2023-10-30 02:10:17 29 4
gpt4 key购买 nike

尝试编写一个单元测试来检查用户是否输入了正确的密码。

为此使用 Django 的 native 身份验证函数 user.check_password

问题是 check_password 出于某种原因不接受 user 对象自己的密码。例如,这会引发错误:

assert user.check_password(user.password), "Password doesn't match"

user.password 返回 MD5 unicode 字符串。

有谁知道为什么这个检查不通过,怎么才能通过检查?

最佳答案

发生这种情况是因为 check_password 接受一个原始字符串,而您正在向它传递一个散列。

assert user.check_password(user.password)  # False because passing hash

assert user.check_password('my_password') # True because accepts a raw string

user.passwordpassword 的散列和元数据。

根据 docs ,

check_password(raw_password)
Returns True if the given raw string is the correct password for the user. (This takes care of the password hashing in making the comparison.)

因此,只需将实际的原始字符串密码传递给 user.check_password(),单元测试就会通过。

关于python - Django User.check_password 不会通过密码检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30849366/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com