美文网首页Flask
Flask Web开发密码加盐

Flask Web开发密码加盐

作者: 梦醒家先生 | 来源:发表于2018-06-23 17:49 被阅读0次

    一、flask框架项目搭建的基础上扩展

    MVC框架模式:
    • model模型(定义模型-->属性的计算/模型-->封装到模型类中),
    • view(模板-->html,css,js)
    • control(控制-->将模型显示到视图中-->路由)
      在开发中,对模型的处理一般都要放到模板中处理,不要在视图函数中进行相关属性的计算

    二、 在项目中的模板视图中直接引入

    from datetime import datetime
    from werkzeug.security import generate_password_hash, check_password_hash
    from . import db
    
    class User(BaseModel, db.Model):
        """用户"""
        __tablename__ = "info_user"
    
        id = db.Column(db.Integer, primary_key=True)  # 用户编号
        nick_name = db.Column(db.String(32), unique=True, nullable=False)  # 用户昵称
        password_hash = db.Column(db.String(128), nullable=False)  # 加密的密码
        mobile = db.Column(db.String(11), unique=True, nullable=False)  # 手机号
        avatar_url = db.Column(db.String(256))  # 用户头像路径
        last_login = db.Column(db.DateTime, default=datetime.now)  # 最后一次登录时间
        is_admin = db.Column(db.Boolean, default=False)
        signature = db.Column(db.String(512))  # 用户签名
        gender = db.Column(  # 订单的状态
            db.Enum(
                "MAN",  # 男
                "WOMAN"  # 女
            ),
            default="MAN")
        # property:将装饰器的方法提升为类属性--->默认为getter方法--->解耦
        @property
        def password(self):
            raise AttributeError("当前属性不可读")
    
        # 定义一个赋值的方法
        @password.setter
        def password(self, value):
            self.password_hash = generate_password_hash(value)
    
        # 定义一个验证密码的方法
        def check_password(self, password):
            return check_password_hash(self.password_hash, password)
    
    • 密码加密函数定义:
      generate_password_hash是一个密码加盐哈希函数,生成的哈希值可通过
      check_password_hash()进行验证。
    函数的定义(源码).png
    • 哈希之后的哈希字符串格式是这样的:
    method$salt$hash
    
    • 参数说明:
      password: 明文密码
      method: 哈希的方式(需要是hashlib库支持的),格式为
      pbpdf2:<method>[:iterations]。参数说明:
            method:哈希的方式,一般为SHA1,
            iterations:(可选参数)迭代次数,默认为1000。
      slat_length: 盐值的长度,默认为8。


      flask密码加密验证.png

    相关文章

      网友评论

        本文标题:Flask Web开发密码加盐

        本文链接:https://www.haomeiwen.com/subject/cshdyftx.html