返回顶部

项目简要分析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)

 

posted @ 2018-05-03 20:39  Crazymagic  阅读(167)  评论(0)    收藏  举报