• flask 密码加密 视频资料


    https://www.bilibili.com/video/av53870541/?p=33

    通过在数据模型中定义函数来实现加密

    from werkzeug.security import generate_password_hash,check_password_hash

    class User(db.Modle):
      id = db.Column(db.Integer,primary_key=True,autoincrement=True)
      name = db.Colmn(db.String(20), unique=True)
      password_hash =db.Colmn(db.String(128))    # 坑 字段不能少于128
     
      @property
      def password(self):
        print('xxxx随意')

      @password.setter
      def passowrd(self,password):
        self.password_hash = generate_password_hash(password)

      def check_password(self,password):
        return check_password_hash(self.password_hash,passowrd)
     

    通过装饰器装饰函数

    其中@property 将函数变为模型中的字段,但并不会影响到模型的字段.如果进行访问只会得到输出的字符串,不会被查看到密码

    通过@pasword.setter 将函数password变为可修改 ,通过赋值来修改,赋值途中使用 

    from werkzeug.security import generate_password_hash 加密,通过self添加到模型数据库中

    def check_password(self,password): 这是通过数据库中记载的加密密码和输入的密码进行一个对比,相同则为trun

    # 往数据库中添加数据
    
    user = User()
    user.name = '张三'
    
    # 注意 模型中没有password这个字段,只有同名函数,通过装饰器@property将其变为(伪)字段 ,可以进行加密,不对模型产生改变
    # @password.setter 变为能将其加密保存

    user.password = '123' db.session.add(user) db.session.commit() # --------------------------------------- # 登录验证 user = User.query.filter(User.name=form.name.data).first() if user: # 使用字段中的验证函数进行hash验证,如果为正则往下 if user.check_password_hash(form.password.data): print('密码验证成功') session['user_name'] = user.name return render_templates('home.html') else: flash('密码不正确') return render_templates('login.html') return render_templates('logon.html',登录表单=登录表单)

    user.password_hash 访问的是加密过后的密码,不能直接看到.只能使用check_password_hash() 来进行确定,防止密码明文泄露

  • 相关阅读:
    Kubernetes 集成研发笔记
    Rust 1.44.0 发布
    Rust 1.43.0 发布
    PAT 甲级 1108 Finding Average (20分)
    PAT 甲级 1107 Social Clusters (30分)(并查集)
    PAT 甲级 1106 Lowest Price in Supply Chain (25分) (bfs)
    PAT 甲级 1105 Spiral Matrix (25分)(螺旋矩阵,简单模拟)
    PAT 甲级 1104 Sum of Number Segments (20分)(有坑,int *int 可能会溢出)
    java 多线程 26 : 线程池
    OpenCV_Python —— (4)形态学操作
  • 原文地址:https://www.cnblogs.com/zengxm/p/11177698.html
Copyright © 2020-2023  润新知