【问题标题】:How to manually match username & password for users created with Flask-User如何手动匹配使用 Flask-User 创建的用户的用户名和密码
【发布时间】:2017-05-27 17:54:41
【问题描述】:

我正在为现有的烧瓶应用程序实现一个 api,登录是使用 Flask-User 创建的,但是现在我需要手动查找用户并匹配密码以进行身份​​验证。

问题是我不知道如何重新创建密码哈希以与存储在数据库中的密码 Flask-User 进行比较。

主要是因为https://github.com/lingthio/Flask-User/blob/master/flask_user/passwords.py 的 Flask-User 源提到了盐,但是从我拥有的数据库列中:

sqlite> pragma table_info(user);
0|id|INTEGER|1||1
1|username|VARCHAR(50)|1||0
2|password|VARCHAR(255)|1|''|0
3|reset_password_token|VARCHAR(100)|1|''|0
4|email|VARCHAR(255)|1||0
5|confirmed_at|DATETIME|0||0
6|is_active|BOOLEAN|1|'0'|0
7|first_name|VARCHAR(100)|1|''|0
8|last_name|VARCHAR(100)|1|''|0

没有盐。所以问题是我如何从明文密码生成一个哈希值,我可以将其与 Flask-User 创建的哈希值进行比较。 这是一个无关紧要的样本哈希;

$2a$12$84F1dCPN1bVYEzPswDvgZu5ma1Xk5lNepvX/X9kKFYj8Q6Dy6j95q

【问题讨论】:

  • 为什么要手动做,而不是使用flask-user api来做呢?

标签: python hash flask bcrypt flask-login


【解决方案1】:

也许可以试试 user_manager.hash_password 函数。 https://pythonhosted.org/Flask-User/api.html

【讨论】:

  • 从链接中我什至可以使用 user_manager.verify_password(password, user) ,用户的价值是什么?用户名或用户对象,如果是后者,我将如何获取用户对象?谢谢。
  • 我假设它是用户对象,但您必须仔细检查。是的,我建议使用verify_password 而不是自己编写逻辑。关于安全性,最好让框架完成所有工作,因为它已经过测试和审计。
猜你喜欢
  • 1970-01-01
  • 2017-04-25
  • 1970-01-01
  • 2021-12-02
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-12
  • 1970-01-01
相关资源
最近更新 更多