zoukankan      html  css  js  c++  java
  • 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'))
  • 相关阅读:
    手动安装mysql
    spring boot 配置注入
    IOS-电话拦截
    重新入坑-IntelliJ Maven
    git使用问题
    Intelij U
    iTunes空间不足无法备份iphone的问题
    Centos7最小化安装
    实操笔记
    centos7中端口及服务对应情况(笔记)
  • 原文地址:https://www.cnblogs.com/zengsf/p/10012629.html
Copyright © 2011-2022 走看看