概述
图形验证码逻辑分
我们看一下注册页面
我们输入手机号,然后输入图片验证码,图片验证码正确才可以发送短信验证码,而却每次发送要想隔60秒
关于这种比较成熟的技术,一定都有大神写好了,所以我们直接拿过来使用
这个文件里就存放着写好的图形验证码的代码
我们直接复制到我们的utils文件夹下
我们打开写好的图形验证码的代码运行一下
我们现在不需要知道他是怎么写的,我们只需要知道他返回了两个数据,我们需要使用它,引入captcha
我们在蓝图文件夹中创建一个文件,来调用我们的验证码
这里涉及到一个REST风格
REST架构风格详解:https://mp.weixin.qq.com/s?src=11×tamp=1606106419&ver=2723&signature=O1pCH*ErzigAO97KwxpScJzxqipTpCXH3iC9K19S4zsXmfSluADAENqqmJNAHIs1CAbDp9-KAMAYrZMfIBZnyXLAxdzJNCi4XfybCWPisLmU7k*wK2Es70qzSpQWAetw&new=1
保存在Redis中有一个特点,读取快
现在又出现一个问题,我和好几个人同时访问,生成验证码,怎么知道这个验证码是我的,他应该给每一个验证码生成一个唯一的标识:我们需要使用uuid
uuid:https://mp.weixin.qq.com/s?src=11×tamp=1606106857&ver=2723&signature=jsWCKsuxOyvVJ7EBa2i-A1TgBI6OzQrtMQrBYyMiDej8C4n6nBl*ja2HtbyurJkqRRY3iqWhvsv8BUutPFzWAibSrozGNY0kmsydXE*arJlXdfBrMHivj6Trb89ba*U5&new=1
这个uuid就是用户的唯一标识,如果我们不用uuid呢,我们可以使用时间戳+随机数
我们在我们新创建的verify_code.py文件中写入我们的代码
首先导入蓝图
from . import api
然后创建路由
# UUID image_code_id
# GET 127.0.0.1/api/v1.0/image_codes/<image_code_id>
@api.route("/image_codes/<image_code_id>")
def get_image_code(image_code_id):
pass
我们在Redis中用那种数据类型来保存数据呢,还有如何处理过期时间(一个验证码长时间不输入就会过期)
Redis命令参考:http://doc.redisfans.com/
我们有两个选择:
- hash:image_code:{id:1,name:zaaaacki},但是哈希没有办法设置过期时间
- string:uuid:xxxx 可以设置过期时间 : SETEX
总结:图形验证码会遇到的一些问题,
- 首先我们定义的路由要使用REST风格
- 然后给验证码生成唯一表示
- uuid
- 时间戳+随机数
- 我们需要保存验证码:保存在Redis,数据库等等(这里我们保存在Redis中,因为读写快)
- 然后确定保存的数据类型:是字符串类型还是哈希类型
- 然后设置验证码过期时间:哈希类型不能设置过期时间,所以我们选择字符串类型使用SETEX命令
最后
以上就是贪玩夏天为你收集整理的web项目010-----图形验证码逻辑分析图形验证码逻辑分的全部内容,希望文章能够帮你解决web项目010-----图形验证码逻辑分析图形验证码逻辑分所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复