我有一个 Django 项目,我想将其转移到 Flask 中。 问题是像 django 一样加密和解密密码。 是否有可能实现与 django 1.10 中相同的加密和解密。那就是我想在 flask 中以与使用 django 相同的方式创建和验证密码。谷歌搜索给了我 passlib 但文档不清楚 django 版本(1.10)。谢谢。
最佳答案
(此处为 Passlib 开发人员)
Passlib 应该绝对能够处理这种情况,让我知道文档的哪些部分不清楚,我可以尝试清理它们! (最新文档位于 http://passlib.readthedocs.io/en/stable/ )
这应该有助于您入门(假设 passlib >= 1.7)。
处理事情的最简单方法是创建一个 CryptContext 实例,配置数据库中的所有哈希格式。它将从那里负责散列和验证。
对于 Django 1.10,您可能需要如下内容:
>>> from passlib.context import CryptContext
>>> pwd_context = CryptContext(
default="django_pbkdf2_sha256",
schemes=["django_argon2", "django_bcrypt", "django_bcrypt_sha256",
"django_pbkdf2_sha256", "django_pbkdf2_sha1",
"django_disabled"])
您可以将上面的“默认”调整为您希望新哈希使用的任何方案——甚至可以将非 django 哈希格式(如“bcrypt”)插入列表中。您还可以删除数据库中不存在的任何内容。
一旦上下文对象存在,只需调用 .hash() 来散列密码,自动生成盐值:
>>> hash = pwd_context.hash("foo")
>>> hash
'pbkdf2_sha256$29000$uzyeK0HKJIBR$XQtpjc9nfTdteF1fpk1Jk7FCePwB7S2JLuggiE8UBE4='
然后进行以下验证散列:
>>> pwd_context.verify("foo", hash)
True
>>> pwd_context.verify("bar", hash)
False
passlib 的 CryptContext tutorial 中有更多详细信息如果你需要的话。
关于python - 与 flask 一起使用的 django 1.10 密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40949183/