flask项目1实战:2.2 flask框架下使用图片验证码

在这里插入图片描述

(根据居然老师直播课内容整理)
  • 图片生成组件是成熟的组件,直接到网上搜一个大能开发的组件,在自已框架中引用即可

一、自己系统内的后台使用接口

1、接口文档:

  • 接口名字
  • 描述
  • URL
  • 请求方式
  • 传入参数
  • 返回值

接口:获取图片验证码
描述:前端访问,可以获取到验证码图片
URL:/api/v1.0/image_codes/<image_code_id>
请求方式:GET
传入参数:

名字 类型 是否必须 说明
image_code_id 字符串 验证码的编号

返回值:

名字 类型 是否必须 说明
errno 字符串 错误代码
errmsg 字符串 错误内容

2、后端接口定义(路由定义):

  • 采用REST风格
  • 调用 图片验证码组件,生成图片验证码
  • 将图片验证码存到redis中
  • 以图片形式将图片验证码数据返回前端
@api.route("/image_codes/<image_code_id>")
def get_image_code(image_code_id):
    """
    获取图片验证码
    :param image_code_id: 图片的编号
    :return: 验证码,验证码图像
    """
    # 验证参数
    # 业务逻辑处理
    # 生成验证码图片
    text, image_data = captcha.generate_captcha()
    # 保存验证码
    try:
        redis_store.setex('image_code_%s' % image_code_id, constants.IAMGE_CODE_REDIS_EXPIRES, text)
    except Exception as e:
        logging.error(e)
        return jsonify(errno=RET.DBERR, errmsg='保存图片验证码失败')

    # 返回值
    response = make_response(image_data)
    response.headers['Content-Type'] = 'image/jpg'
    return response

3、在蓝图中引用

  • 路由一定要在蓝图中引用,否则无法被调用
from flask import Blueprint

api = Blueprint("api_1_0", __name__, url_prefix="/api/v1.0")

from . import demo,verify_code

4、验证

4.1 启动后台服务

4.2 地址栏输入:http://127.0.0.1:5000/api/v1.0/image_codes/xxxx

  • 正常显示图片验证码即可

4.3 启动redis客户端,get image_code_xxxx

在这里插入图片描述
值与显示图片一致即为正确

二、前端图形验证码应用(略)

猜你喜欢

转载自blog.csdn.net/laoluobo76/article/details/110371563
今日推荐