首页 > 密码保护

密码保护

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

class User(db.Model):

    __tablename__ = 'user' 

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

 

class User(db.Model):__tablename__ = 'user'id = db.Column(db.Integer, primary_key=True, autoincrement=True)username = db.Column(db.String(20), nullable=False)_password = db.Column(db.String(200), nullable=False)nickname = db.Column(db.String(50))

 

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)

 

from werkzeug.security import generate_password_hash, check_password_hash

@property
def password(self):return [email protected]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

 

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):

def login():if request.method == 'GET':return render_template('login.html')else:usern = request.form.get('username')passw = request.form.get('password')user = User.query.filter(User.username == usern).first()if user:if user.check_password(passw):session['user'] = usernsession['user_id'] = user.idsession.permanent = Truereturn redirect(url_for('index'))else:return u'password error'else:return u'error username'

转载于:https://www.cnblogs.com/JUNJUNER/p/8084922.html

更多相关:

  • while 语句的九九乘法表: ##九九乘法表#总共有九行# 每行中的列数,就是当前所处的行号#乘式的第一个数代表的是列,第二个数代表的是行row = 1#行column = 1#列while row <= 9: while column <= row: print('%d * %d = %d, '%(colum...

  • #encoding=gbk import os import re import math from os import path''' 手动输入文件nmon文件路径,要截取的开始时间,结束时间 '''rootdir='E:\pylianxi\ceshi' #input("请输入文件路径:") start_time="14...

  • 问题1:手动修改的查询语句,放入到项目中后显示结果和实际查询结果不一致 由于实际情况中用的了分页功能,导致最终的语句在查询完成后,添加了分页项,即如下代码。 ROW_NUMBER() OVER ( ORDER BY COLUMNS) PAGE_ROW_NUMBER,   又由于语句是用DISTINCT关键字结尾的,所以最终的语句...

  • 一、mybatis  环境搭建步骤  第一步:创建 maven 工程第二步:导入坐标第三步:编写必要代码(实体类和持久层接口)第四步:编写 SqlMapConfig.xml第五步:编写映射配置文件第六步:编写测试类 二、编写sqlMapConfig.xml

  • struts 2 结合json 在struts 2中,要结合json的话,其实是不错的选择,最近做一个登陆系统时,可以考虑选择用 struts 2结合json,下面是要点 register页面    

    Drupal6中的表单如果不让修改

    2019独角兽企业重金招聘Python工程师标准>>> 做好的表单,怎么不让用户进行修改。 $form['user'] = array(    '#type'=> 'textfield',    '#title' => '姓名(*)',      '#default_value' => $feedbacks["u...

  • 在asp.net中的数据绑定中,我们经常会用到Eval,不过大家都知道Eval绑定是通过反射来实现的, 而反射势必会对性能造成一定的影响。不过有两种替代的方式来实现绑定数据,对性能略有提高。 1 当数据源为DataTable时,用下面的方式: 后台代码 protected void Page_Load(object sender,...