flask实现验证码并验证功能

那么首先来介绍一下 Flask。Flask 是一款轻量级的 Web 应用框架,它基于 Jinja2 模板引擎,Werkzeug WSGI 工具包和 Python 标准库。它具有灵活性、可扩展性和易于使用等特点,适合用于快速地搭建原型应用、服务、RESTful API 和网站等。

当在网站或后台管理系统中设计登录表单时,通常需要使用验证码验证功能来防止恶意 BOT 及暴力破解,下面介绍如何在 Flask 中实现验证码及验证码验证功能。

Flask 验证码实现

  1. 引入依赖包

安装 Pillow 库:

pip install Pillow

安装 captcha 库:

pip install captcha
  1. 生成图片验证码
from flask import Flask, Response
from captcha.image import ImageCaptcha
app = Flask(__name__)

@app.route('/captcha')
def gen_captcha():
    image = ImageCaptcha(fonts=['./times_new_york.ttf'])
    code = 'ABCD'  # 生成随机验证码字符
    data = image.generate(code)  # 生成图片验证码
    response = Response(data.getvalue(), mimetype='image/png')
    response.headers['Content-Type'] = 'image/png'
    return response
  1. 生成 Math 类型验证码
from flask import Flask, Response
from captcha.image import ImageCaptcha
from captcha.math import MathCaptcha
app = Flask(__name__)

@app.route('/captcha')
def gen_captcha():
    captcha_type = 'math'  # 指定验证码类型为数学计算类型
    if captcha_type == 'math':
        captcha = MathCaptcha()
        code = captcha.generate_expression()
        image = ImageCaptcha(fonts=['./times_new_york.ttf'])
    else:
        captcha = ImageCaptcha(fonts=['./times_new_york.ttf'])
        code = 'ABCD'  # 生成随机验证码字符
        image = captcha
    data = image.generate(code)  # 生成图片验证码
    response = Response(data.getvalue(), mimetype='image/png')
    response.headers['Content-Type'] = 'image/png'
    return response

Flask 验证码验证功能

通过生成图片验证码后,需要在表单提交时接收验证码并验证其正确性。下面介绍如何在 Flask 中实现验证码验证功能。

from flask import Flask, request
from captcha.image import ImageCaptcha
from captcha.math import MathCaptcha
app = Flask(__name__)

@app.route('/captcha', methods=['GET'])
def gen_captcha():
    captcha_type = 'math'  # 指定验证码类型为数学计算类型
    if captcha_type == 'math':
        captcha = MathCaptcha()
        code = captcha.generate_expression()
        image = ImageCaptcha(fonts=['./times_new_york.ttf'])
    else:
        captcha = ImageCaptcha(fonts=['./times_new_york.ttf'])
        code = 'ABCD'  # 生成随机验证码字符
        image = captcha
    data = image.generate(code)  # 生成图片验证码
    response = Response(data.getvalue(), mimetype='image/png')
    response.headers['Content-Type'] = 'image/png'
    session['captcha'] = captcha.solve_expression(code)  # 将验证码字符存入 session 中
    return response

@app.route('/login', methods=['POST'])
def login():
    username = request.form['username']
    password = request.form['password']
    captcha = request.form['captcha']
    if session['captcha'] == captcha:  # 验证表单提交的验证码和 session 中存储的验证码是否相等
        # TODO: 验证用户名和密码
        return 'Login Success!'
    else:
        return 'Captcha Error!'

由上述代码可知,通过将验证码字符存入 session 中,在提交表单时比较表单提交的验证码和 session 中存储的验证码是否相等,以实现验证码验证功能。

其中,通过使用 captcha.solve_expression(code) 方法计算生成的数学表达式的结果,并将其存入 session 中。

另外,在具体实现中,还需要根据表单类型和应用场景的需求选择具体的验证码类型。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:flask实现验证码并验证功能 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • Flask框架工厂函数用法实例分析

    下面是详细的攻略: Flask框架工厂函数用法实例分析 Flask框架工厂函数(Factory Function)是一个比较高级的用法,为开发者提供了更多的可控制性和可扩展性,它允许开发者在适当的时候实现修改app对象的全局配置。 在使用flask框架时,初始化app对象的方式如下: from flask import Flask app = Flask(_…

    Flask 2023年5月15日
    00
  • flask + pymysql操作Mysql数据库的实例

    下面是使用 Flask 和 PyMySQL 操作 MySQL 数据库的完整攻略,包含两条示例说明。 安装 PyMySQL 使用 PyMySQL 操作 MySQL 数据库需要先安装 PyMySQL 库,可以通过以下命令在命令行中安装: pip install pymysql 创建 Flask 应用 首先,需要创建一个 Flask 应用。可以通过以下代码创建一个…

    Flask 2023年5月16日
    00
  • Flask 文件上传方法(详解版)

    Flask 是一个轻量级的 Web 框架,提供了简洁的 API 和易于使用的工具,使得开发 Web 应用程序变得更加简单。 在本文中,我们将深入探讨 Flask 中的文件上传功能。 首先,在 Flask 中使用文件上传,需要用到 werkzeug 模块的 FileStorage 类。FileStorage 可以将上传的文件转换为特定类型的表示,以便在应用程序…

    Flask 2023年3月13日
    00
  • Flask中提供静态文件的实例讲解

    下面是“Flask中提供静态文件的实例讲解”的完整攻略: 提供静态文件的方法 Flask中提供静态文件,主要是使用Flask应用对象的static_folder和static_url_path参数。其中,static_folder指定静态文件的存储路径,static_url_path则是静态URL的前缀。默认情况下,static_folder为应用程序的/s…

    Flask 2023年5月16日
    00
  • Python的Flask框架及Nginx实现静态文件访问限制功能

    讲解一下Python的Flask框架及Nginx如何实现静态文件访问限制功能的完整攻略。 1. Flask框架 1.1 Flask框架介绍 Flask是一款基于Python语言的轻量级Web框架,其主要特点是简单易学、灵活、可扩展以及具有良好的文档支持。Flask框架的主要功能包括路由映射、请求处理、会话管理、模板引擎等。 1.2 Flask框架安装 安装F…

    Flask 2023年5月16日
    00
  • python中Flask Web 表单的使用方法介绍

    下面是 Python 中 Flask Web 表单的使用方法介绍: Flask Web 表单 Flask Web 表单(Flask Web Forms)是 Flask 框架的一个扩展,它提供了简单易用的 API 来处理 Web 表单。使用 Flask Web 表单,可以轻松地编写处理用户表单的代码并实现表单验证。 安装 Flask Web 表单 安装 Fla…

    Flask 2023年5月15日
    00
  • python用Pygal如何生成漂亮的SVG图像详解

    准备工作 Pygal是一个轻量级的Python图表库,支持生成各种类型的矢量图像,并且可以直接输出成SVG格式文件。在使用Pygal之前,需要先安装该库: pip install pygal 创建一个简单的Pygal图表 首先,我们可以创建一个简单的Pygal图表,来熟悉一下Pygal的使用方法。以下是一个创建柱状图的示例代码: import pygal #…

    Flask 2023年5月16日
    00
  • Python基于Flask框架配置依赖包信息的项目迁移部署

    下面将详细讲解“Python基于Flask框架配置依赖包信息的项目迁移部署”的完整攻略,包含以下两条示例说明: 示例1:使用requirements.txt文件配置依赖包 在原项目中使用 pip freeze > requirements.txt 命令将当前项目的依赖包列表输出到 requirements.txt 文件中。 将 requirements…

    Flask 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部