发送短信验证码,后端实现


'{"mobiel": "18811111111", "image_code": "AAAA", "image_code_id": "u23jksdhjfkjh2jh4jhdsj"}'
# 1. 获取参数:手机号,图片验证码内容,图片验证码的编号 (随机值)
# params_dict = json.loads(request.data)
params_dict = request.json

mobile = params_dict.get("mobile")
image_code = params_dict.get("image_code")
image_code_id = params_dict.get("image_code_id")

# 2. 校验参数(参数是否符合规则,判断是否有值)
# 判断参数是否有值
if not all([mobile, image_code, image_code_id]):
# {"errno": "4100", "errmsg": "参数有误"}
return jsonify(errno=RET.PARAMERR, errmsg="参数有误")
# 校验手机号是否正确
if not re.match('1[35678]\\d{9}', mobile):
return jsonify(errno=RET.PARAMERR, errmsg="手机号格式不正确")

# 3. 先从redis中取出真实的验证码内容
try:
real_image_code = redis_store.get("ImageCodeId_" + image_code_id)
except Exception as e:
current_app.logger.error(e)
return jsonify(errno=RET.DBERR, errmsg="数据查询失败")

if not real_image_code:
return jsonify(errno=RET.NODATA, errmsg="图片验证码已过期")

# 4. 与用户的验证码内容进行对比,如果对比不一致,那么返回验证码输入错误
if real_image_code.upper() != image_code.upper():
return jsonify(errno=RET.DATAERR, errmsg="验证码输入错误")

# 5. 如果一致,生成短信验证码的内容(随机数据)
# 随机数字 ,保证数字长度为6位,不够在前面补上0
sms_code_str = "%06d" % random.randint(0, 999999)
current_app.logger.debug("短信验证码内容是:%s" % sms_code_str)
# 6. 发送短信验证码
# result = CCP().send_template_sms(mobile, [sms_code_str, constants.SMS_CODE_REDIS_EXPIRES / 5], "1")
# if result != 0:
# # 代表发送不成功
# return jsonify(errno=RET.THIRDERR, errmsg="发送短信失败")

# 保存验证码内容到redis
try:
redis_store.set("SMS_" + mobile, sms_code_str, constants.SMS_CODE_REDIS_EXPIRES)
except Exception as e:
current_app.logger.error(e)
return jsonify(errno=RET.DBERR, errmsg="数据保存失败")

# 7. 告知发送结果
return jsonify(errno=RET.OK, errmsg="发送成功")

 

转载于:https://www.cnblogs.com/dreamer-zhang/p/10498257.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值