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)#内部使用

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)

    @propertydef password(self):#外部使用return self._password@password.setterdef password(self,row_password):self._password=generate_password_hash(row_password)def check_password(self,row_password):result=check_password_hash(self._password,row_password)return result

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

@app.route('/login/', methods=['GET', 'POST'])
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'] = usern# session['userid']=user.idsession.permannet = Truereturn redirect(url_for('shouye'))else:return '密码错误'else:return '用户名不存在'

转载于:https://www.cnblogs.com/laidaili/p/8084616.html

密码保护(2017.12.22)相关推荐

  1. 【一周头条盘点】中国软件网(2017.12.18~2017.12.22)

    每一个企业级的人 都置顶了 中国软件网 中国软件网 为你带来最新鲜的行业干货 趋势洞察 IBM沈晓卫:担心人工智能对人类的威胁就像担心火星上车牌限号 IBM中国研究院院长沈晓卫认为,从纯粹的技术角度来 ...

  2. 方舟等级生成工具 V2.6!支持属性倍数设置!每级经验可调!【2018.12.22更新】

    #程序介绍: 仅支持Sream版本,包括破解版和正式版. 研究点数为每级点数. 每个属性最多加点255点!!!每个属性最多加点255点!!!每个属性最多加点255点!!! 重要的事情说3遍!!! #更 ...

  3. deepin efi 启动u盘_【2017.12.16】启动U盘简单手动制作BIOS+UEFI的syslinux/grub/boomgr/grub2互转...

    本帖最后由 lintrainwy 于 2018-1-4 15:05 编辑 文件和方法来源于网上,本人做了整合,方便U盘启动 1.BIOS方式下,这个U盘启动是syslinux 6.03+grub4do ...

  4. 2017第22届中国国际厨房、卫浴设施展览会会刊(参展商名录)

    2017第22届中国国际厨房.卫浴设施展览会会刊(参展商名录) 展会名称: 2017年第22届中国国际厨房.卫浴设施展览会 所属展馆: 上海新国际博览中心 开展时间: 2017-05-31 至 06- ...

  5. OSN博士必须掌握的必杀技(更新至2017/12/15)

    以下内容更新至2017.12.15 概率图模型 1 Representation 11 The Bayesian Network Representation 12 Undirected Graphi ...

  6. 12.21 php-fpm的pool 12.22 php-fpm慢执行日志 12.23 open_basedir 12.24 php-fpm进程管理

    2019独角兽企业重金招聘Python工程师标准>>> 12.21 php-fpm的pool 为了避免因多站点使用同一个pool时因一个站点故障导致pool出问题,进而影响使用同一个 ...

  7. 写出TREE-MINIMUM 和TREE-MAXIMUM的递归版本(算法导论第三版12.2-2)

    写出TREE-MINIMUM 和TREE-MAXIMUM的递归版本(算法导论第三版12.2-2) template<typename T> BinaryTreeNode<T>* ...

  8. python 计算s= 12+ 22+ 32 +... + (10*n+2)

    计算 s= 12+ 22+ 32 +- + (10*n+2) 参考代码 @author: Catwang """ def main():sum = 0n = int(in ...

  9. [Scrum] 12.22

    昨天完成了泛海精灵的构架设计以及界面设计. 基于插件的泛海精灵更能适应敏捷开发. 泛海精灵的的框架如下图"泛海精灵0.0"所示. 泛海精灵的主界面如下图"泛海精灵0.1& ...

  10. 又被ESLint 调戏了!!! ESLint:Newline required at end of file but not found. eslint(eol-last) [12, 22]

    又被ESLint 调戏了!!! ESLint:Newline required at end of file but not found. eslint(eol-last) [12, 22] 报错如下 ...

最新文章

  1. 黑盒测试方法之因果图法
  2. AI时代的GitHub,这个陆奇看好的方向,终于有人做了
  3. 深度学习100例-卷积神经网络(CNN)实现mnist手写数字识别 | 第1天
  4. 亚马逊部分 AWS DNS 系统遭 DDoS 攻击,已达数小时之久
  5. 周赛 Hd2270+总结改进
  6. 实战演示 Go 反射的使用方法和应用场景
  7. TestNg依赖详解(三)------灵活的文件配置依赖
  8. dateformat 返回类型_SpringBoot返回date日期格式化
  9. java ui自动化测试脚本,如何用Airtest编写UI自动化脚本(示例代码)
  10. mysql5.7空间运算,深度解析MySQL5.7之临时表空间
  11. python把hdf转为tif_命令行记录-python读取hdf图层,转成tif文件
  12. java 性能框架_Java Fork Join 框架(四)性能
  13. sql三表查询_滴滴SQL面试题解析:打车业务问题
  14. 百度认证(深度学习初级工程师)考试题1
  15. 如何确定自己的科研课题?
  16. thrift+springBoot
  17. html directive 内容传递,directive的传值问题(全面解析directive的传值问题)微信分享实例...
  18. 基于FPGA的数字交通红绿灯Verilog开发Modelsim仿真
  19. 流畅的python 对象引用 可变性和垃圾回收
  20. python 如何绘制ppt折线图

热门文章

  1. shell第二次练习
  2. NYOJ--41--三个数从小到大排序
  3. java 输入输出 函数对象构造
  4. 深度数据对接 链接服务器 数据传输
  5. java定义一个二维数组
  6. (二)Luence——代码实现索引及搜索
  7. 双击获取GridView控件行信息
  8. 我的2009:知识管理篇
  9. BGPVRP5.0的10条选路原则,以及NE20的IBGP负载均衡
  10. dbeaver 视图有一个x_《工程制图》——视图、剖视图、断面图、局部放大图