用户注册逻辑的实现

匿名 (未验证) 提交于 2019-12-02 23:55:01

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='发送失败')
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!