当前位置:网站首页>Flask框架实现注册加密功能详解【Flask企业课学习】
Flask框架实现注册加密功能详解【Flask企业课学习】
2022-08-04 17:56:00 【51CTO】
Table of Contents
一.前言
本学期开了为期一个月的flask框架基础课,前面的知识之前都有接触过,最近的综合运用Flask框架的flask-bootstrap模板 、Flaskform表单和flask-sqlalchemy数据库框架实现基本注册功能和使用werkzeug密码散列计算实现注册的密码安全性。也是第一次接触。
涉及的内容:
1.能够综合运用Flask框架的flask-bootstrap模板 、Flaskform表单和flask-sqlalchemy数据库框架实现基本注册功能
2.能够使用werkzeug密码散列计算实现注册的密码安全性
二.werkzeug密码散列值
密码散列函数是一种 单向散列函数 ,将任意长度的消息压缩到某一固定长度的 消息摘要 ,一个理想的密码散列函数应该有四个主要的特性:对于任何一个给定的消息,它都很容易就能运算出散列数值。
werkzeug中的security模块实现了密码散列值的计算。1.from werkzeug.security import check_password_hash,generate_password_hash
generate_password_hash函数的输入为原始密码,返回密码散列值的字符串形式,供存入用户数据库。
check_password_hash数据库中存放的密码hash值,和用户输入的密码,如果一致,返回True,如果不一致,返回False。
用户前端输入,传值给后端,密码字段传入password函数,执行generate_password_hash
方法,返回密码散列值的字符串形式。函数 check_password_hash 检查给出的hash密码与传入的密码是否相符。如果一致,返回True,如果不一致,返回False。
三.后端详解
3.1准备
引入werkzeug中的security模块,
引入FlaskForm模块
引入SQLAlchemy模块
3.2创建数据库
先创建一下我们的数据库:
如下:
3.4 register视图函数
如果传入的值不为空的话,将前端传递的username和password作为参数传入User()
User()方法处理加密后的字段返回赋值给user。
存入数据库:
将known赋值为False,响应给前端
前端输出提示信息:注册成功

3.5 使用Flaskform编写register表单代码
上述代码解释:
这块比较简单一些,作用就是规定了name表单的最小输入为8个字符,最大为16个字符,password同理。
截图如下:
四,前端
4.1使用flask-bootstrap模板完成register.html页面渲染代码
之前后端写过,传值到前端 known,如果通过的话赋值 known为False,前端这里,如果判断为当前为数据库里存在的用户,会输出Happy to see you again!
五.效果图
效果图如下:




边栏推荐
- 【技术笔记】let 和 var和const的异同
- leetcode 13. 罗马数字转整数
- mysqlbinlog 超过500g自动删除,保留7个,求大深给个版本
- LeetCode 899. 有序队列
- darknet source code reading notes-02-list.h and lish.c
- localstorage本地存储的方法
- 使用scikit-learn计算文本TF-IDF值
- 【日记】mysql基本操作
- 【技术积累】JS事件循环,Promise,async/await的运行顺序
- R语言缺失时间序列的填充及合并:补齐时间序列数据中所有缺失的时间索引、使用merge函数合并日期补齐之后的时间序列数据和另外一个时间序列数据(补齐左侧数据)
猜你喜欢
随机推荐
SQL优化最全总结 - MySQL(2022最新版)
【软件工程之美 - 专栏笔记】37 | 遇到线上故障,你和高手的差距在哪里?
R语言时间序列数据算术运算:使用diff函数计算时间序列数据的逐次差分、使用时间序列之间的除法计算相对变化率(乘以100获得百分比)
群友求助,一周没有搞定的需求,3分钟就解决了?
mysql cdc 为什么需要RELOAD 这个权限?这个权限在采集数据的过程中的作用是什么?有哪
C. LIS or Reverse LIS?
区间贪心(区间合并)
使用Redis做某个时间段在线数统计
身为程序员的我们如何卷死别人?破局重生。
OpenInfra Days China 2022|SelectDB与你共享 Apache Doris 在互联网广告业务中的实践
clickhouse 上下线表
php如何查询字符串以什么开头
树莓派通过API向企业微信推送图文
小程序经典案例
自定义组件,并在组件中注入自定义组件实现多种场景的下的组件切换
【日记】mysql数据库连接池
localstorage本地存储的方法
容器化 | 在 NFS 备份恢复 RadonDB MySQL 集群数据
字节二面被问到mysql事务与锁问题,我蚌埠住了
哈夫曼树(暑假每日一题 15)









