我有一个用Django写的网站,最近从Django 1.11.28升级到2.2.12。自从升级后,所有的用户认证都失败了。日志中没有错误信息显示,好像每个人的密码都变了。
升级前已登录的用户仍然可以登录。但是,一旦他们注销,就无法再登录。
奇怪的是,我可以用manage.py重新设置超级用户的密码,但用新密码登录还是失败。
我注意到Django 2.0版本文档中提到,在djano.contrib.auth中:"PBKDF2密码哈希的默认迭代次数从36000次增加到100000次"。我想我可能要改变它的设置,或者要求大家重新设置密码,但在使用manage.py重置管理员密码没有成功后,我不再相信这是问题所在。
是否有我遗漏的新设置?
你可以在这里重现这个问题。 https:/github.comshadytradesmanthe-contract-sitetree32ea6578800f648679f1af55a962858b931bf81a。
网站应该很容易在本地运行 :)
EDIT: 在做了更多的测试之后,我发现这个问题是在Django 2.0.13和2.1.0版本之间引入的。
我找到了问题所在! 问题发生在2.0.13和2.1.0之间。这是由我使用的一个应用程序django-user-accounts引起的。将这个库从2.0.1升级到3.0.2后,问题就解决了 :)