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

为此使用Django的 native auth函数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



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

10-04 23:00
查看更多