Django身份验证问题 - user.save()更改密码哈希

时间:2013-02-22 11:12:36

标签: django django-models django-authentication

我在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()会更改密码哈希值?如何解决此问题?

1 个答案:

答案 0 :(得分:0)

好的,我找到了开发人员通过pre_save信号调用的一些代码。我修复了此代码中的错误,现在问题解决了。