首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >check_password_hash曾否返回False

check_password_hash曾否返回False
EN

Stack Overflow用户
提问于 2022-11-29 23:39:47
回答 1查看 33关注 0票数 -1

我正在创建一个带有登录auth的烧瓶api,但是check_password_hash总是返回false,我得到了一个错误。

在我的app.py里,我正在尝试这个

代码语言:javascript
复制
from werkzeug.security import generate_password_hash, check_password_hash

@app.route("/signup", methods=["GET", "POST"])
def signup():
    if request.method == "POST":
        hashed_pw = generate_password_hash(request.form["password"], method="sha256")
        new_user = Users(username=request.form["username"], password=hashed_pw)
        db.session.add(new_user)
        db.session.commit()

        return "You've registered successfully."

    return render_template("signup.html")

@app.route("/login", methods=["GET", "POST"])
def login():
    if request.method == "POST":
        user = Users.query.filter_by(username=request.form["username"]).first()

        if user and check_password_hash(user.password, request.form["password"]):
            session['username'] = user.username
            return "You are logged in"
        else:
            return "Your credentials are invalid, check and try again."

    return render_template("login.html")

当我打印user.password和request.form“密码”时,它返回散列。

通过sha256$SSC4jjZIE3Wm6l7v$74e78b19ddfa3ad62963c93f34d9c6cd93b67e47b4e42e896a726d79 -> pass -> 1

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-30 00:13:46

首先,确保request.form“密码”返回用户键入的密码。

我不知道你是怎么破解密码的。无论如何,一种简单的方法是使用passlib。它没有已知的弱点。

代码语言:javascript
复制
from passlib.hash import sha256_crypt

要保存散列:

代码语言:javascript
复制
hashed_password = sha256_crypt.hash("ThePassword")

要检查密码:

代码语言:javascript
复制
ha256_crypt.verify("password from the form", hashed_password)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74621419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档