Python 将哈希密码从flask导入django
我必须将我的flask用户迁移到django。在flask中,我使用werkzeug库生成了密码,如:Python 将哈希密码从flask导入django,python,django,Python,Django,我必须将我的flask用户迁移到django。在flask中,我使用werkzeug库生成了密码,如: generate_password_hash(value, method='sha256') 在django导入中,我保存了密码: u.password = hashed_pw 现在,密码位于数据库中,如下所示: 'sha256$VSvtvATP$2c87cf...' 现在django无法验证我的密码。如何转换密码以便django能够处理它?django默认使用不同的密码哈希算法,即带有
generate_password_hash(value, method='sha256')
在django导入中,我保存了密码:
u.password = hashed_pw
现在,密码位于数据库中,如下所示:
'sha256$VSvtvATP$2c87cf...'
现在django无法验证我的密码。如何转换密码以便django能够处理它?django默认使用不同的密码哈希算法,即带有SHA-256的PBKDF2。将现有散列移到Django的唯一方法是告诉它使用不同的散列器。普通的SHA-256哈希程序不是内置的,所以您必须这样做
不过,我会考虑不这样做,并为您现有的用户提供迁移路径,因为PBKDF2-SAH256被认为更安全:
将这些散列存储在用户的另一个字段中,并在首次登录时提示他们更改密码(然后扔掉旧散列,只保存以Django方式散列的密码)。您甚至可以对您的用户透明地执行此操作(即,在第一次登录时,在检查哈希与Flask中的旧哈希匹配后,基于相同的密码(此时您拥有的密码)生成新哈希)然后存储它,然后扔掉旧的散列。或者以一种粗鲁的方式,要求每个人重置密码。您将如何执行此操作?您首先需要验证用户是否拥有正确的密码,然后才允许他们更改密码。您至少必须通过邮件执行此操作。上述解决方案不需要重置密码。它甚至不需要需要强制用户更改密码。在用户更改密码之前,它可以愉快地使用旧哈希运行。但在某种程度上推动用户可能会更好。