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

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

使用Django的本机auth函数user.check_password.

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

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.password是密码的哈希值和元数据.

根据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(),unittest将通过.

上一篇:如何在Java-mysql中验证用户名和密码?


下一篇:【jzoj 4605】【luogu P2824】排序(二分)(线段树)