2013-02-22 137 views
1

我遇到在Django 1.4.5一个奇怪的身份验证问题成功地对指定的原始密码:Django的认证问题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散列器:

In [22]: user.password 
Out[22]: 'pbkdf2_sha256$10000$Aj5RbYndelmz$j35cic6UBh/HWnD//7TMfGWEtt7j4+T6970lOezpc1U=' 

因此,即使创建一个超级用户后:

python manage.py createsuperuser 

我无法使用指定的凭证登录。

为什么user.save()更改密码散列,我该如何解决这个问题?

+2

它不应该发生,我不能用新创建的1.4.5项目来重现它。您是否以某种方式修改了用户模型或contrib.auth的其他部分? – 2013-02-22 12:26:21

+0

好的,我找到了一些开发人员通过pre_save信号调用的代码。我修正了这段代码中的一个错误,现在问题解决了。 – Ries 2013-02-22 12:48:54

回答

0

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