1.基本的注册逻辑实现
2.这里代码给的是用户进入页面,已经输入了图片验证码,由于前面代码逻辑比较简单,代码就不上了,逻辑上来说就是用户进入注册页面,输入手机号码,输入图片验证码,前端生成验证码唯一编码,通常使用uuid,通用唯一标识符,或者使用Linux时间戳向后台后台请求验证码图片,后台生成验证码,并将验证码编码和验证码存入数据库中(一般使用内存级数据库).
3.接下来是用户输入手机号,点击获取短信验证码,这里使用第三方平台,并将第三方提供的SDK进行进一步封装后使用.(没有放代码,平台很多,根据使用的平台使用)
4.这里存入的是Redis数据库,下面对数据库存入数据格式有具体的分析
# 获取短信息验证码视图 # 前端采取get请求访问,携带参数,手机号码,验证码编号,用户输入的验证码 # 访问127.0.0.1:5000/api/v1.0/sms_codes?image_code_id=&image_code= @api.route('/sms_codes/<re(r"13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\d{8}"):mobile>') def get_sms_code(mobile): """获取短信验证码""" # 获取数据 image_code = request.args.get('image_code') image_code_id = request.args.get('image_code_id') # 校验数据 if not all([image_code, image_code_id]): # 参数不完整 return jsonify(errno=RET.PARAMERR, errmsg='参数不完整') # 业务处理:从redis中获取验证码信息 # 判断图片验证码是否过期 try: real_image_code = redis_store.get('image_code_%s' % image_code_id) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.DBERR, errmsg='redis数据库异常') # 判断验证码是否过期 if real_image_code is None: # 不存在或者已经过期 return jsonify(errno=RET.NODATA, errmsg='图片验证码已过期') # 与用户填写的进行对比(忽略大小写) if real_image_code.lower() != image_code.lower(): # 有验证码错误 return jsonify(errno=RET.DATAERR, errmsg='验证码错误') # 判断手机号是否存在 try: # 如果不存在返回none user = User.query.filter_by(mobile=mobile).first() except Exception as e: current_app.logger.error(e) # 这里代表数据库连接失败,但是不应该返回错误,在最终注册的时候再进行最后的校验 else: # 如果发生异常,user就没有值了,没有异常的时候进行判断,否则程序崩溃 if user is not None: # 该手机号已经注册过 return jsonify(errno=RET.DATAEXIST, errmsg='手机号已经存在') # 若果手机号不存在,生成随机短信验证码 sms_code = '%06d' % random.randint(0, 999999) # 验证码存入redis中,使用字符串存储,设置过期时间为300秒 try: redis_store.setex('sms_code_%s' % mobile, SMS_CODE_REDIS_EXPIRES, sms_code) except Exception as e: current_app.logger.error(e) # 保存失败 return jsonify(errno=RET.DBERR, errmsg='保存验证码失败') # 发送短信验证码 ccp = CCP() # 几分钟过期 result = ccp.sendTemplateSMS(mobile, [sms_code, SMS_CODE_REDIS_EXPIRES / 60], 1) # 返回响应 if result == 0: # 发送成功 return jsonify(errno=RET.OK, errmsg='发送成功') else: return jsonify(errno=RET.THIRDERR, errmsg='发送失败') 来源:51CTO
作者:吴亮亮5_
链接:https://blog.csdn.net/qq_43418281/article/details/100081910