我正在创建一个带有登录auth的烧瓶api,但是check_password_hash总是返回false,我得到了一个错误。
在我的app.py里,我正在尝试这个
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
发布于 2022-11-30 00:13:46
首先,确保request.form“密码”返回用户键入的密码。
我不知道你是怎么破解密码的。无论如何,一种简单的方法是使用passlib。它没有已知的弱点。
from passlib.hash import sha256_crypt要保存散列:
hashed_password = sha256_crypt.hash("ThePassword")要检查密码:
ha256_crypt.verify("password from the form", hashed_password)https://stackoverflow.com/questions/74621419
复制相似问题