我在Django 1.4.5中遇到奇怪的身份验证问题:
一旦我调用user.save(),密码哈希就会改变,并且不会成功检查指定的原始密码:
In [17]: user.check_password('test')
Out[17]: False
In [18]: user.set_password('test')
In [19]: user.check_password('test')
Out[19]: True
In [20]: user.save()
In [21]: user.check_password('test')
Out[21]: False
使用pbkdf2_sha256 hasher:
对密码进行哈希处理In [22]: user.password
Out[22]: 'pbkdf2_sha256$10000$Aj5RbYndelmz$j35cic6UBh/HWnD//7TMfGWEtt7j4+T6970lOezpc1U='
所以即使在创建超级用户之后:
python manage.py createsuperuser
我无法使用指定的凭据登录。
为什么user.save()会更改密码哈希值?如何解决此问题?
答案 0 :(得分:0)
好的,我找到了开发人员通过pre_save信号调用的一些代码。我修复了此代码中的错误,现在问题解决了。