项目简要分析1
用户注册接口
1 发送验证码接口(返回的是图片jpg)
问题1 : 看它的uuid是怎么生成的,一开始的时候在页面加载的时候自动生成,然后点击图片有生成
已经解决在页面加载的时候通过js自动生成的
url
/api/v1_0/image_codes/image_code_id
接受前端传的参数从url中通过<>获取的
image_code_id是前端生成的uuid
调用生成好的接口
name, text, image_data = captcha.generate_captcha()
保存到redis中,设置过期时间 (以前端的uid拼接存到redis)
redis_store.setex('image_code_' + image_code_id, 180, text)
返回给前端的相应数据(是一个图片),所以要设置返回的类型,直接返回图片
resp = make_response(image_data)
resp.headers['Content-Type'] = 'image/jpg'
return resp
2 获取短信的验证码(返回的是手机的验证码)
请求的地址
GET /api/v1_0/sms_codes/17612345678?image_code=werz&image_code_id=61242
接受的参数如下:
imaga_code 图片的验证码 image_code_id uuid
image_code = request.args.get('image_code')
image_code_id = request.args.get('image_code_id')
从redis中获取真实的验证码
real_image_code = redis_store.get('image_code_' + image_code_id)
如果real_image_code=None则失效
如果real_image_code.low() != image_code.low(),返回输入验证码有误
查询数据库里面该手机号有没有注册
user = User.query.filter_by(mobile = mobile).first()
如果user is not None 返回该号码已被注册
创建生成6位的随机验证码
sms_code = '%06d' % random.randint(0, 999999)
将验证码保存到redis中(格式为sms_code_+手机号)
redis_store.setex('sms_code_' + mobile, constants.SMS_CODE_REDIS_EXPIRES, sms_code)
调用接口发送短信
ccp = CCP() # 第一个是手机号, 第二个发短信模板需要的参数[验证码, 过期时间], 第三个短信的模板编号 # result 如果发送短信成功, 就会返回0, 如果失败,就会返回-1 result = ccp.send_template_sms(mobile, [sms_code, constants.SMS_CODE_REDIS_EXPIRES / 60], 1)
if result == 0:
# 0, 表示发送短信成功
resp_dict = {
'errno': RET.OK,
'errmsg': '发送短信成功'
}
return jsonify(resp_dict)
else:
# -1, 表示发送短信失败
resp_dict = {
'errno': RET.THIRDERR,
'errmsg': '发送短信失败'
}
return jsonify(resp_dict)

浙公网安备 33010602011771号