Beispiel #1
0
def get_image_code():
    """
    获取图片验证码
    1.接收请求,获取UUID和上一个uuid
    2.判断数据库保存的uuid是否等于last_uuid等于删除,
    3.生成图片验证码
    4.保存新的uuid,对应的图片文本信息
    :return: josnify 验证码图片
    """
    # 1.接收请求,获取UUID,last_uuid
    uuid = request.args.get('uuid')
    last_uuid = request.args.get('last_uuid')
    if not uuid:
        #缺省参数报403异常
        abort(403)
    # 2.生成图片验证码 名字,文字信息,图片信息
    name, text, image = captcha.generate_captcha()
    current_app.logger.debug('图片验证码信息:' + text)
    # 4.删除上次生成的验证码图片
    try:
        if last_uuid:
            redis_conn.delete('ImageCode:' + last_uuid)
        # 3.保存UUID对应的验证码文字信息,设置时长
        redis_conn.set('ImageCode:' + uuid, text,
                       constants.IMAGE_CODE_REDIS_EXPIRES)
    except Exception as e:
        current_app.logger.debug(e)
        return jsonify(re_code=RET.DBERR, msg='保存图片验证码失败')
    response = make_response(image)
    response.headers['Content-Type'] = 'image/jpg'
    return response
def get_image_code():
    """提供图片验证码
        1.接受请求,获取uuid
        2.生成图片验证码
        3.使用UUID存储图片验证码内容到redis
        4.返回图片验证码
    """
    # 1.接收请求,获取前端的uuid
    uuid = request.args.get('uuid')
    last_uuid = request.args.get('last_uuid')
    if not uuid:
        abort(403)

    # 2.生成验证码
    name, text, image = captcha.generate_captcha()

    # 3. 使用UUID存储图片验证码内容到redis
    try:
        if last_uuid:
            # 上次的uuid若还存在,删除上次的uuid对应的记录
            redis_store.delete('ImageCode:' + last_uuid)

        # 保存本次需要记录的验证码数据
        redis_store.set('ImageCode:' + uuid, text,
                        constants.IMAGE_CODE_REDIS_EXPIRES)
    except Exception as e:
        logging.error(e)
        return jsonify(errno=RET.DBERR, errmsg=u'保存验证码失败')

    # 4.返回图片验证码
    response = make_response(image)
    response.headers['Content-Type'] = 'image/jpg'
    return response
Beispiel #3
0
def image_code():
    #生成图片验证码
    name, text, image = captcha.generate_captcha()
    response = make_response(image)
    #文件标准,告诉前端是啥类型的
    response.mimetype = 'image/png'
    # 验证码的文本
    print(text)
    session['image_code'] = text
    return response
Beispiel #4
0
def generate_image_code():
    image_code_id = request.args.get('image_code_id')  # 获取参数
    if not image_code_id:  # 判断参数是否存在
        return jsonify(status=0, msg='参数缺失')
    name, text, image = captcha.generate_captcha()  # 调用扩展来生成图片验证码
    redis_store.setex('ImageCode_' + image_code_id,
                      constants.IMAGE_CODE_REDIS_EXPIRES,
                      text)  # 保存图片验证码到redis
    response = make_response(image)  # 使用响应对象返回图片本身
    response.headers['Content-Type'] = 'image/jpg'  # 设置响应的数据类型
    return response  # 返回响应
Beispiel #5
0
def getImageCode():
    img_code_id = request.args.get("img_code_id")
    # 打印发现该方法返回对象包括随机名字 , 验证码内容 , 和图片数据
    img_name, img_content, img_data = captcha.generate_captcha()
    response = make_response(img_data)
    response.content_type = "image/jpeg"
    # 将验证码存入redis
    # set_redis_data()
    # 将验证码存入session
    session[img_code_id] = img_content
    # 返回验证码图片
    return response
Beispiel #6
0
def image_code():
    from app.utils.captcha.captcha import captcha

    # 生成验证码
    # hash值  验证码值  图片内容
    name, text, image = captcha.generate_captcha()

    # print("注册时的验证码为:", name, text, images)  # hash值  验证码值  图片内容

    # 将生成的图片验证码值作为value,存储到session中
    session[
        "captcha"] = text  # 通过session的方式将刚刚生成的图片验证码的值,进行存储,以便在登录的时候进行验证 图片验证码是否输入正确

    # 返回响应内容
    resp = make_response(image)
    # 设置内容类型
    resp.headers['Content-Type'] = 'images/jpg'
    return resp
Beispiel #7
0
def image_code():
    """生成图片验证码并返回"""
    # js生成用于唯一标识验证码
    image_code_id = request.args.get("image_code_id")
    if not image_code_id:
        return jsonify(errno=RET.PARAMERR, errmsg="image_code_id不存在")
    # 调用第三方工具得到验证码图片及验证码字符串
    name, text, image = captcha.generate_captcha()
    # 将真实字符串保存到redis
    try:
        redis_store.setex("ImageCode" + image_code_id,
                          constants.IMAGE_CODE_REDIS_EXPIRES, text)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DATAERR, errmsg="保存图片验证码错误")
    # 把图片返回给前段展示
    else:
        # 生成响应对象返回image
        response = make_response(image)
        response.headers["Content--Type"] = "image/jpg"
        return response
Beispiel #8
0
def get_image_code():
    """
    获取图片验证码
    :return:
    """
    # 1.获取当前的图片编号id
    code_id = request.args.get('code_id')
    # 2.生成验证码
    name, text, image, = captcha.generate_captcha()

    try:
        # 保存当前生成的图片验证码内容
        redis_store.setex('ImageCode_' + code_id,
                          constants.IMAGE_CODE_REDIS_EXPIRES, text)
    except Exception as e:
        current_app.logger.error(e)
        return make_response(jsonify(errno=RET.DATAERR, errmsg='保存图片验证码失败'))

    # 返回相应内容
    resp = make_response(image)
    # 设置内容类型
    resp.headers['Content-Type'] = 'image/jpg'
    return resp
Beispiel #9
0
def img_code():
    """图片验证码"""
    # 前一次的img_code_id
    pre_code_id = request.args.get('pre')
    # 当前的img_code_id
    current_code_id = request.args.get('cur')
    # 生成图片验证码
    # name-图片验证码的名字, text-图片验证码的文本, image-图片的二进制数据
    name, txt, img = captcha.generate_captcha()

    try:
        # 把 txt 存入redis 把上一次存入的该用户 验证码删除
        redis_store.delete("ImageCode_"+pre_code_id)
        redis_store.setex(name="ImageCode_"+current_code_id,time=constants.ImgCodeTime,value=txt)
    except Exception as e:
        logging.error(e)
        return jsonify(errno=RET.DBERR, errmsg="保存图片验证码失败")
    else:
        # 给前端返回img
        #print(img)
        response = make_response(img)
        # 设置传回给前端的内容数据是图片格式
        response.headers["Content-Type"] = "image/jpg"
        return response