flask项目:主要负登录模块
登录模块又分为两个小模块:
1. 注册:
首先分析注册功能的需求:
- 使用手机号为当前用户名进行注册
- 注册的时候需要输入图形验证码(一般是网站用来反爬虫的保证注册者不是机器人)
- 在发送短信验证码之前需要验证图片验证码,以防止恶意发送短信验证码
实现步骤:
1.图形验证码:
- 图形验证码借助的是第三方工具包 captch
- 由于请求验证码的时候为了标识验证码的唯一性;又防止与其他用户发生冲突等校验错误的情况
- 采用UUID通用唯一标识码来生成一个图片验证码的编号
1.1 图片验证码的验证流程:
- 前端页生成验证码编号,并将编号并提交到后台去请求验证码图片
- 后台生成图片验证码,并把验证码文字内容当作值,验证码编号当作key存储在 redis 中
- 后台把验证码图片当作响应返回给前端
- 前端申请发送短信验证码的时候带上第1步验证码编号和用户输入的验证码内容
- 后台取出验证码编号对应的验证码内容与前端传过来的验证码内容进行对比
- 如果一样,则向指定手机发送验证码,如果不一样,则返回验证码错误
2. 短信验证码:
- 短信验证码借助容联云的云通讯向用户的手机发送短信验证码
不仅需要注册还要导入第三方包来实现
2.1发送短信验证码的流程:
- 接收前端发送过来的请求参数:mobile手机号;image_code输入的图片验证码的内容;image_code_id真实图片验证码的编号
- 检查参数是否已经全部传过来:mobile;image_code;image_code_id
- 判断手机号格式是否正确:通过正则校验手机号码是否符合规则
- 检查图片验证码是否正确,若不正确,则返回图片验证码错误(将携带过来的图片验证码内容与保存在redis中的对比)
- 如果正确则删除图片验证码;生成随机的短信验证码
- 使用第三方SDK发送短信验证码
3.完成注册:
用户收到短信验证码之后完成注册,将用户信息保存在数据库中
2. 登录:
- 登录的时候 校验手机号和密码即可
获取输入的密码与保存在数据库中的进行对此
获取手机号进行对比
正常则登录成功 - 保存用户的登录状态:
session["user_id"] = user.id
session["nick_name"] = user.nick_name
session["mobile"] = user.mobile
- 退出登录状态 只需要删除session里面的用户登录的状态信息就行
总结:
与django框架的区别在于
这里登录注册只限于手机号码;验证方法单一 短信验证码
都使用的运通讯 这里没有用到异步任务发送短信