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