flask 密码加密 视频资料

Posted zengxm

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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() 来进行确定,防止密码明文泄露

 

以上是关于flask 密码加密 视频资料的主要内容,如果未能解决你的问题,请参考以下文章

Python-flask建立用户登录时密码加密方法

Flask实现密码存储安全性

Flask 学习-25.passlib 对密码加密与验证

利用Flask中的werkzeug.security模块加密

Flask 学习-24.用户注册(sha256_crypt对密码加密)

Flask-----Flask里引用哈希密码