• flask中利用from来进行对修改修改时旧密码的验证


      在flask中,肯定是post提交个from进行密码验证。还有一定就是修改密码肯定是登录之后才能进行对密码的修改,这么说,在浏览器中的session中一定会有用户的信息,可以通过相对应的信息去获取到相对应的用户密码。

      这里需要对werkzeug库里面的两个方法有所了解:

       数据库中直接存放明文密码是很危险的,Werkzeug库中的security能够方便的实现散列密码的计算,security库中 generate_password_hash(password,method...)函数将原始密码作为输入,以字符串形式输出密码的散列值,check_password_hash(hash,password)函数检查给出的hash密码与明文密码是否相符。

    第一步:

    在数据模型中创建一个函数

    def check_pwd(self, pwd):
        from werkzeug.security import check_password_hash
        return check_password_hash(self.userpwd, pwd)

    第二步:

    在from中的pwdForm下可以调用在模型中定义好的检查密码的函数

    def validate_old_pwd(self, field):
        from flask import session
        pwd = field.data
        name = session["admin"]
        admin = Admin.query.filter_by(name=name).first()
        if not admin.check_pwd(pwd):
            raise ValidationError("旧密码错误!")

    第三步:

    检验通过,还要存储到数据库中,就要用到generate_password_hash了

    form = PwdForm()
    if form.validate_on_submit():
        data = form.data
        admin = Admin.query.filter_by(name=session["admin"]).first()
        from werkzeug.security import generate_password_hash
        admin.pwd = generate_password_hash(data["new_pwd"])
        db.session.add(admin)
        db.session.commit()
        flash("修改密码成功,请重新登录!", "ok")
        return redirect(url_for('admin.logout'))
  • 相关阅读:
    wireshake抓包,飞秋发送信息,python
    python问题:IndentationError:expected an indented block错误解决《转》
    560. Subarray Sum Equals K
    311. Sparse Matrix Multiplication
    170. Two Sum III
    686. Repeated String Match
    463. Island Perimeter
    146. LRU Cache
    694. Number of Distinct Islands
    200. Number of Islands
  • 原文地址:https://www.cnblogs.com/zengsf/p/10012629.html
Copyright © 2020-2023  润新知