Exemplo n.º 1
0
def register():
    """用户注册接口:
    1.获取参数phone_num 手机号,phonecode 	短信验证码,password 	密码
    2.校验数据
    3.从Redis获取短信验证码,和传来的数据校验,如果正确
    4.新增user对象,
    5.跳转首页,保持登录状态
    :return 返回注册信息{ 're_code':'0','msg':'注册成功'}
    """
    # 1.获取参数phone_num 手机号,phonecode 	短信验证码,password 	密码
    json_dict = request.json
    phone_num = json_dict.get('phone_num')
    phonecode_client = json_dict.get('phonecode')
    password = json_dict.get('password')
    # 2.校验数据
    if not all([phone_num, phonecode_client, password]):
        return jsonify(re_code=RET.PARAMERR, msg='参数不完整')

    # 校验手机号是否正确
    if not re.match(
            r'^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$',
            phone_num):
        return jsonify(re_code=RET.PARAMERR, msg='手机号不正确')

    # 3.从Redis获取短信验证码,和传来的数据校验,如果正确
    try:
        phonecode_server = redis_conn.get('PhoneCode:' + phone_num)
    except Exception as e:
        current_app.logger.debug(e)
        return jsonify(re_code=RET.DBERR, msg='查询短信验证码失败')
    if phonecode_server.decode() != phonecode_client:
        return jsonify(re_code=RET.PARAMERR, msg='短信验证码错误')

    # 4.新增user对象,
    user = User()
    user.name = phone_num
    user.phone_num = phone_num
    user.password_hash = password
    try:
        db.session.add(user)
        db.session.commit()
    except Exception as e:
        current_app.logger.debug(e)
        db.session.rollback()
        return jsonify(re_code=RET.DBERR, msg='注册失败')
    # 5.跳转首页,保持登录状态
    session['user_id'] = user.id
    session['name'] = user.name
    session['phone_num'] = user.phone_num
    # 6.响应结果
    return jsonify(re_code=RET.OK, msg='注册成功')
Exemplo n.º 2
0
def register():
    """用户注册接口"""
    # 1.获取参数phone_num 手机号,phonecode 	短信验证码,password 	密码
    phone_num = request.json.get('phone_num')
    phonecode_client = request.json.get('phonecode')
    password = request.json.get('password')
    #2.校验数据
    if not all([phone_num, phonecode_client, password]):
        return jsonify(re_code=RET.PARAMERR, msg='参数不完整')

    # 校验手机号是否正确
    if not re.match(r'1[3456789]\d{9}$', phone_num):
        return jsonify(re_code=RET.PARAMERR, msg='手机号不正确')

    # 3.从Redis获取短信验证码,和传来的数据校验,如果正确
    try:
        phonecode_server = redis_conn.get('PhoneCode:' + phone_num)
    except Exception as e:
        current_app.logger.debug(e)
        return jsonify(re_code=RET.DBERR, msg='查询短信验证码失败')
    if phonecode_server != phonecode_client:
        return jsonify(re_code=RET.PARAMERR, msg='短信验证码错误')

    #4.新增user对象,
    user = User()
    user.name = phone_num
    user.phone_num = phone_num
    user.password_hash = password
    try:
        db.session.add(user)
        db.session.commit()
    except Exception as e:
        current_app.logger.debug(e)
        db.session.rollback()
        return jsonify(re_code=RET.DBERR, msg='注册失败')
    #5.跳转首页,保持登录状态
    session['user_id'] = user.id
    session['name'] = user.name
    session['phone_num'] = user.phone_num
    #6.响应结果
    return jsonify(re_code=RET.OK, msg='注册成功')
Exemplo n.º 3
0
def register():
    """用户注册接口:
    1.获取参数phone_num 手机号,phonecode 	短信验证码,password 	密码
    2.校验数据
    3.从Redis获取短信验证码,和传来的数据校验,如果正确
    4.新增user对象,
    5.跳转首页,保持登录状态
    :return 返回注册信息{ 're_code':'0','msg':'注册成功'}
    """
    # 1.获取参数phone_num 手机号,phonecode 	短信验证码,password 	密码
    print('注册')
    json_dict = request.get_json()
    phone_num = json_dict.get('phone_num')
    sms_code = json_dict.get('phonecode')
    password = json_dict.get('password')
    password2 = json_dict.get('password2')

    #2.校验数据
    print(phone_num)
    print(sms_code)
    print(password2)
    print(password)
    if not all([phone_num, sms_code, password]):
        return jsonify(re_code=RET.PARAMERR, msg='参数不完整')
    print(1)
    # 校验手机号是否正确
    if not re.match(r'^0\d{2,3}\d{7,8}$|^1[358]\d{9}$|^147\d{8}$', phone_num):
        return jsonify(re_code=RET.PARAMERR, msg='手机号不正确')
    print(2)
    # 确认密码
    if password != password2:
        return jsonify(re_code=RET.PWDERR, msg='确认密码不一致')
    print(3)

    # 3.从Redis获取短信验证码,和传来的数据校验,如果正确
    try:
        real_sms_code = redis_conn.get('PhoneCode:' + phone_num)
    except Exception as e:
        current_app.logger.debug(e)
        return jsonify(re_code=RET.DBERR, msg='查询短信验证码失败')
    print(4)
    # 短信验证
    # str.encode('utf-8')
    # bytes.decode('utf-8')
    print(real_sms_code)
    real_sms_code = real_sms_code.decode('utf-8')
    print(real_sms_code)
    print(sms_code)
    if real_sms_code != sms_code:
        return jsonify(re_code=RET.PARAMERR, msg='短信验证码错误')
    print(5)
    #4.新增user对象,
    user = User()
    user.name = phone_num
    user.phone_num = phone_num
    # 加密密码
    user.password_hash = password
    # 提交
    try:
        db.session.add(user)
        db.session.commit()

    except IntegrityError as e:
        current_app.logger.errer(e)
        # 回滚
        db.session.rollback()
        return jsonify(re_code=RET.DBERR, msg='手机号已被注册')

    except Exception as e:
        current_app.logger.errer(e)
        db.session.rollback()
        return jsonify(re_code=RET.DBERR, msg='注册失败')
    print(6)
    #5.跳转首页,保持登录状态
    session["user_id"] = user.id
    session["name"] = user.name
    session["phone_num"] = user.phone_num
    #6.响应结果
    print('注册成功')
    return jsonify(re_code=RET.OK, msg='注册成功')