gpt4 book ai didi

python - 通过密码查询 SQLAlchemy 用户模型永远不会匹配用户

转载 作者:太空宇宙 更新时间:2023-11-04 10:09:01 24 4
gpt4 key购买 nike

我希望我的 Flask 应用程序中的用户能够通过提供新电子邮件和当前密码来更改他们的电子邮件。但是,当我尝试通过他们使用 User.query.filter_by(password=form.password.data) 输入的密码查找用户时,它永远找不到用户。如何查询用户以便在验证密码时更改电子邮件?

@app.route('/changeemail', methods=['GET', 'POST'])
def change_email():
form = ChangeEmailForm(request.form)

if form.validate_on_submit():
user = User.query.filter_by(password=form.password.data).first()

if user and bcrypt.check_password_hash(user.password,form.password.data):
user.email = form.email.data
db.session.commit()
return redirect(url_for("user.confirmed"))

return render_template('user/changeemail.html',form=form)

class ChangeEmailForm(Form):
email = TextField('email', validators=[DataRequired()])
password = PasswordField('password', validators=[DataRequired()])

class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String, unique=True, nullable=False)
password = db.Column(db.String, nullable=False)

最佳答案

存储散列密码的重点是让您永远存储原始密码。查询您正在编辑的用户,然后验证密码。

@app.route('/<int:id>/change-email', methods=['GET', 'POST'])
def change_email(id):
user = User.query.get_or_404(id)

if user.check_password(form.password.data):
...

关于python - 通过密码查询 SQLAlchemy 用户模型永远不会匹配用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39418832/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com