zoukankan      html  css  js  c++  java
  • 密码保护

    1.更新User对象,设置对内的_password

    class User(db.Model):

        __tablename__ = 'user' 

        _password = db.Column(db.String(200), nullable=False) #内部使用

    2.编写对外的password

    from werkzeug.security import generate_password_hash, check_password_hash

        @property

        def password(self):  #外部使用,取值

            return self._password

        @password.setter

        def password(self, row_password):#外部使用,赋值

            self._password = generate_password_hash(row_password)

    3.密码验证方法:

        def check_password(self, row_password): #密码验证

            result = check_password_hash(self._password,row_password)

            return result

    4.登录验证:

            password1 = request.form.get('password')

            user = User.query.filter(User.username == username).first()

            if user:

                if user.check_password(password1):

     1 from werkzeug.security import generate_password_hash,check_password_hash
     2 
     3 
     4 class User(db.Model):  # 创建类User
     5     __tablename__ = 'user'  # 类对应的表名user
     6     id = db.Column(db.Integer, primary_key=True, autoincrement=True)  # autoincrement自增长
     7     username = db.Column(db.String(20), nullable=False)  # nullable是否为空
     8     _password = db.Column(db.String(200), nullable=False) # 内部使用
     9     nickname = db.Column(db.String(50), nullable=True)
    10 
    11 
    12    # 定义属性 password:
    13     @property
    14     def password(self):  # 外部使用
    15         return self._password
    16 
    17     @password.setter
    18     def password(self, row_password):
    19         self._password = generate_password_hash(row_password)
    20 
    21     def check_password(self, row_password):
    22          result = check_password_hash(self._password, row_password)
    23          return result
    24 
    25 # 登录。
    26 @app.route('/denglu/', methods=['GET', 'POST'])  # methods定义它有两种请求方式
    27 def denglu():
    28     if request.method == 'GET':
    29         return render_template('denglu.html')
    30     else:
    31         username = request.form.get('user')  # post请求模式,安排对象接收数据
    32         password1 = request.form.get('pass')
    33         user = User.query.filter(User.username == username).first()  # 作查询,并判断
    34         if user:  # 判断用户名
    35             if user.check_password(password1):  # 判断密码
    36                 session['user'] = username  # 利用session添加传回来的值username
    37                 session.permanent = True  # 设置session过期的时间
    38                 return redirect(url_for('daohang'))
    39             else:
    40                 return u'用户密码错误'
    41         else:
    42             return u'用户不存在,请先注册'
  • 相关阅读:
    CentOS linux系统将UTC时间修改为CST时间
    .py与.pyc文件区别
    Linux安装python3.6
    ddt源码修改:HtmlTestRunner报告依据接口名显示用例名字
    FinalShell Mac OS版,Linux版安装及教程
    jmeter 参数化学习之CSV Data Set Config随机读取一行参数
    linux把文件压缩成.tar.gz的命令
    Mac下Sublime Text3配置Python开发环境
    Web Api通过文件流下载文件到本地实例
    WebAPI返回时间数据不带T
  • 原文地址:https://www.cnblogs.com/lianghaohui123/p/8087643.html
Copyright © 2011-2022 走看看