flask项目 Day 3

flask项目 Day 3

1.短信验证码

浏览器向后端发起请求,
请求方式:POST
请求参数:手机号、用户输入图片验证码、验证码前端生成的uuid
后端取到参数,通过uuid在redis里找到value进行图片验证码校对,通过就生成随机验证码内容,让第三方发送短信验证码
第三方短信验证码平台发送短信:容联云,阿里云,告诉第三方手机号,验证码内容,第三方会给后端响应是否发送成功,后端将响应给前端通知前端验证码发送成功

2.云通讯介绍

SDK:软件开发工具包
ACCOUNT SID 开发者id
AUTH TOKEN 验证token

以下划线开头变量 类私有 模块私有

下载官方提供的sdk,配置

3.后端短信验证码接口视图函数

接口设计:
发送短信的逻辑:
1.获取参数,手机号,图片验证码内容,图片验证码uuid
2.校验参数(是否符合规则,是否有值)
3.从redis中取出真实图片验证码内容,校验图片验证码,不一致就返回验证码输入错误
4.如果一致生成验证码内容
5.发送短信验证码
6.告知发送成功

前端js传入ajax json 发送短信失败-1 成功0 返回json

1.传入json格式,字符串loads转为json,或者直接request.json
2.是否都有if not all()
3.从redis中取出图片验证码内容,数据库操作都要try包裹
4.校验成功生成随机数字短信验证码random.randint()
5.发送短信验证码 调用接口CCP().send_template_sms()
6.将短信验证码内容保存到redis,校验,同图片验证码校验一样,key就是手机号,value是随机生成短信验证码,设置过期时间

4.短信验证码前端实现

局部刷新 js实现 发送mobile 图片验证码 uuid参数 ajax请求 判断是否符合规则 发送短信成功

var params = {
	'mobile':mobile
	'image_code':image_Code
	'image_code_id':
}
$.ajax({
	url:'',
	type:'',
	data:JSON.stringify(params),
	contentType:'application/json'
	success:function(response){
		xxx
	}
})

5.注册逻辑视图函数实现

取到参数,校验短信验证码如果一致,初始化User模型,添加到数据库,返回响应

往session中保存数据,表示当前已经登录

6.注册前端实现

阻止默认表单提交,前端ajax请求注册

数据库模型加密密码

@property装饰器设置为属性
@property.setter 设置值 =后面的是传入的value

面试:负责网站注册登录模块,涉及User表

location.reload()当前页面重刷新

7.登录

后台定义视图函数接口:
url:/login
格式:json
参数:用户名,密码

获取参数,
校验参数,
检查用户是否存在
校验密码是否正确:在model里定义校验方法,调用check_password_hash方法
保存登录状态,设置session
响应

为什么ajax?局部刷新!

前端js逻辑:
ajax局部post请求 location.reload()刷新一下

8.登录后个人状态显示

首页视图函数:
如果用户已经登录,将当前登录用户数据传到模版中,供模版显示

flask取得session里k的值,不需要再校验cookie里sessionid,都封装好了

三元运算:user.to_dict() if user else None

退出:

清除存储session的redis

后端:定义退出的视图函数接口
session.pop(‘user_id’,None)
session.pop(‘mobile’,None)
session.pop(‘nick_name’,None)
return jsonify(errno , errmsg=)

前端只用写一下js ajax get请求一下 刷新页面,ok

保存最后一次登录时间:

登录视图函数里,user.last_login = datatime.now()

在视图函数中对模型修改可以不commit,她自动commit,只需要设置一下sqlalchemy配置SQLALCHEMY_COMMIT_ON_TEARDOWN=True

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值