我们如何检索用户的密码?
u = User.objects.get(username__exact=username)
print u.password
显示sha1$f0971$441cac8f604d49869e33ca125a76253a02fef64e
是否有从此编码字符串中找到密码的功能?
答案 0 :(得分:22)
没有。根据设计,它是不可能的。但无论如何都不应该这样做。
答案 1 :(得分:8)
由于安全限制,密码哈希方法是一种方法。您需要重置该用户密码。
尝试使用set_password(raw_password)
方法为用户提供新密码。请记住调用save()
方法以确保将更改保存到数据库中。
u = User.objects.get(username__exact=username)
u.set_password(raw_password)
u.save()
答案 2 :(得分:3)
没有。而且不应该。作为安全性的一部分,密码在保存之前通过单向函数传递,因此如果数据库受到损害,密码就不会被泄露
您可以做的是用你知道的用户的密码替换。这是(好)网站的“忘记密码”功能如何工作:他们向您发送一个新的随机密码,而不是您的旧密码,因为他们(不应该)可以访问它
答案 3 :(得分:3)
不,该字段包含密码的盐渍哈希。从字符串我们知道它是SHA1函数。如果您有密码,您将能够生成相同的散列值作为足迹。出于安全原因,现在应该以经济的方式恢复密码(你仍然可以蛮力,但需要很长时间)。,
答案 4 :(得分:1)
您可以使用以下方法检查密码是否正确:
u.check_password("your password")
此方法和u.set_password("you password")
解决了您所有的问题。
sha1$f0971$441cac8f604d49869e33ca125a76253a02fef64e
是:
哈希函数算法$
盐$
哈希码