Example #1
0
def register():
    #  获取参数
    dict_date = request.json
    mobile = dict_date.get('mobile')
    sms_code = dict_date.get('sms_code')
    password = dict_date.get('password')
    # 校验参数
    if not all([mobile, sms_code, password]):
        return jsonify(error=RET.PARAMERR, errmsg='注册参数不全')
    try:
        redis_sms_code = redis_store.get('SMS' + mobile)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(error=RET.DBERR, errmsg='获取手机号码失败了')
    if not redis_sms_code:
        return jsonify(error=RET.NODATA, errmsg='短信验证码过期了')
    user = User()
    user.nick_name = mobile
    user.mobile = mobile
    user.password = password
    user.last_login = datetime.datetime.now()
    try:
        db.session.add(user)
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(error=RET.DBERR, errmsg='保存异常')
    session["user_id"] = user.id
    session["nick_name"] = user.nick_name
    session["mobile"] = user.mobile
    return jsonify(error=RET.OK, errmsg="注册成功了!!!")
Example #2
0
def register():
    # 获取手机号码
    mobile = request.json.get("mobile")
    # 用户在客户端输入的验证码
    smscode = request.json.get("smscode")
    # 用户在里面输入的密码
    password = request.json.get("password")
    # 获取系统里面存储的短信验证码
    real_sms_code = redis_store.get("sms_code_" + mobile)

    if not real_sms_code:
        return jsonify(errno=RET.NODATA, errmsg="短信验证码已经过期")

    if smscode != real_sms_code:
        return jsonify(errno=RET.PARAMERR, errmsg="请输入正确的短信验证码")
    # 创建一个用户对象用来注册用户
    user = User()
    user.mobile = mobile
    user.password = password
    user.nick_name = mobile
    # 获取当前的时间,用来注册
    user.last_login = datetime.now()

    db.session.add(user)
    db.session.commit()
    return jsonify(errno=RET.OK, errmsg="注册成功")
Example #3
0
def sms_code():
    # 获取参数
    json_data = request.data
    dict_data = json.loads(json_data)
    mobile = dict_data.get('mobile')
    image_code = dict_data.get('image_code')
    image_code_id = dict_data.get('image_code_id')

    # 参数为空校验
    if not all([mobile, image_code, image_code_id]):
        return jsonify(errno=RET.DATAERR, errmsg='参数不全')

    # 校验手机的格式
    if not re.match('1[3-9]\d{9}', mobile):
        return jsonify(errno=RET.DATAERR, errmsg='手机号格式错误')

    # 通过图片验证码编号获取图片验证码
    try:
        image_code_data = redis_store.get('image_code:%s' % image_code_id)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg='数据库查询错误')

    # 判断验证码是否过期
    if not image_code_data:
        return jsonify(errno=RET.DATAERR, errmsg='验证码过期')

    # 判断验证码是否正确
    if image_code.upper() != image_code_data.upper():
        return jsonify(errno=RET.DATAERR, errmsg='验证码错误')

    # 删除redis中的图片验证码
    try:
        redis_store.delete('image:%s' % image_code_id)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg='数据库操作错误')

    # 生成一个随机的验证码
    sms_code = '%06d' % random.randint(0, 999999)
    current_app.logger.debug(str(sms_code))

    # 调用ccp发送短信验证码
    # ccp = CCP()
    # result = ccp.send_template_sms(mobile, [sms_code, 5], 1)
    # if result == -1:
    #     return jsonify(errno=RET.DATAERR, errmsg='短信发送失败')

    # 将短信保存到redis中
    try:
        redis_store.set('sms_code:%s' % mobile, sms_code,
                        constants.IMAGE_CODE_REDIS_EXPIRES)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg='数据库操作错误')

    # 返回响应
    return jsonify(errno=RET.OK, errmsg='发送成功')
Example #4
0
def passport_register():
    # 获取参数
    # json_data = request.data
    # dict_data = json.loads(json_data)

    dict_data = request.json  # 这句话等同于上面的两句话也可以是 dict_data = request.get_json()
    mobile = dict_data.get('mobile')
    sms_code = dict_data.get('sms_code')
    password = dict_data.get('password')

    # 校验为空参数
    if not all([mobile, sms_code, password]):
        return jsonify(errno=RET.DATAERR, errmsg='参数不全')

    # 手机号作为key值取出存在redis中的短信
    try:
        redis_sms_code = redis_store.get('sms_code:%s' % mobile)
    except Exception as e:
        current_app.logger.debug(e)
        return jsonify(errno=RET.DBERR, errmsg='短信验证码取出失败')

    # 判断短信验证码是否过期
    if not redis_sms_code:
        return jsonify(errno=RET.PARAMERR, errmsg='参数过期')

    # 判断短信验证啊是否正确
    if redis_sms_code != sms_code:
        return jsonify(errno=RET.DATAERR, errmsg='验证码错误')

    # 删除短信验证码
    try:
        redis_store.delete('sms_code:%s' % mobile)
    except Exception as e:
        current_app.logger.debug(e)
        return jsonify(errno=RET.DBERR, errmsg='短信验证码删除失败')

    # 创建用户对象
    user = User()

    # 创建用户属性
    user.nick_name = mobile
    user.password = password
    user.mobile = mobile
    user.signature = '该用户很懒,什么也没有留下'

    # 保存数据到数据库
    try:
        db.session.add(user)
        db.session.commit()
    except Exception as e:
        current_app.logger.debug(e)
        return jsonify(errno=RET.DBERR, errmsg='数据库提交失败')

    # 返回响应
    return jsonify(errno=RET.OK, errmsg='注册成功')
Example #5
0
def smscode():
    """
    1.接受提交的参数
    2.校验手机号码
    3.根据传入的图片验证码去redis中取验证码内容
    4.进行验证码比对
    5.生成短信验证码内容并且发送
    6.保存短信验证码到redis中
    7.返回发送成功的响应
    """
    param_dict = request.json
    mobile = param_dict.get("mobile")
    image_code = param_dict.get("image_code")
    image_code_id = param_dict.get("image_code_id")
    if not all([mobile, image_code, image_code_id]):
        return jsonify(errno=RET.PARAMERR, errmsg='参数不全啊,sb!')
# 校验手机号码
    if not re.match('^1[3578][0-9]{9}$', mobile):
        return jsonify(error=RET.PARAMERR, errmsg='你输入的手机号码格式不对啊!!!')
    try:
        real_image_code = redis_store.get('ImageCode_' + image_code_id)
        if not real_image_code:
            return jsonify(errno=RET.NODATA, errmsg='验证码过期了!!')
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.NODATA, errmsg='验证码找不到数据')
    if image_code.lower() != real_image_code.decode().lower():
        # 验证码输入错误
        return jsonify(errno=RET.DATAERR, errmsg="验证码输入错误A!!!")
    sms_code = "%06d" % random.randint(0, 999999)
    # result = CCP().send_template_sms(mobile, [sms_code, constants.SMS_CODE_REDIS_EXPIRES/60], '1')
    # if result != 0:
    #     return jsonify(errno=RET.THIRDERR, errmsg='短信验证码发送失败!!!!!!')
    current_app.logger.debug('短信验证码是:%s' % sms_code)
    try:
        redis_store.set('SMS' + mobile, sms_code,
                        constants.SMS_CODE_REDIS_EXPIRES)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg='保存短信验证码失败了!')
    return jsonify(errno=RET.OK, errmsg='发送成功了!!!!!!!!!!!!!!!!')
Example #6
0
def sms_code():
    # 手机号
    mobile = request.json.get("mobile")
    # 用户输入的图片验证码内容
    image_code = request.json.get("image_code")
    # 真实图片验证码编号
    image_code_id = request.json.get("image_code_id")
    # 检查传递过来的参数是否全部有值
    if not all([mobile, image_code, image_code_id]):
        return jsonify(errno=RET.PARAMERR, errmsg="请输入参数")
    if not re.match(r"1[3456789]\d{9}", mobile):
        return jsonify(errno=RET.PARAMERR, errmsg="请输入正确号码")
    #获取到redis里面的图片验证码
    real_image_code = redis_store.get("image_id_" + image_code_id)
    # 判断验证码是否过期,过期了就拿不到,就是空的
    if not real_image_code:
        return jsonify(errno=RET.NODATA, errmsg="图片验证码过期了")
    # 如果没过期,判断用户输入的验证码,转换成小写的进行判断用lower()
    if image_code.lower() != real_image_code.lower():
        return jsonify(errno=RET.PARAMERR, errmsg="请输入正确验证码")
    # 通过随机生成一个六位数的验证码,用占位符%d
    random_sms_code = "%06d" % random.randint(0, 999999)
    # 在服务器的redis里面存储短信验证码,用来给用户进行检验操作
    # 第一个参数,是电话号码作为key,
    # 第二个参数是短信验证码
    # 第三个参数是有效时间
    redis_store.set("sms_code_" + mobile, random_sms_code,
                    constants.SMS_CODE_REDIS_EXPIRES)

    print("短信验证码内容=" + random_sms_code)
    # 发送短信

    statuCode = CCP().send_template_sms(mobile, [random_sms_code, 5], 1)
    if statuCode != 0:
        return jsonify(errno=RET.THIRDERR, errmsg="短信发送失败")

    return jsonify(errno=RET.OK, errmsg="发送短信成功")