Skip to main content

A simple, limited (basic) wrap of the popular Captcha library for Flask projects.

Project description

flask-includes-captcha

A simple, limited (basic) wrap of the popular Captcha library for Flask projects.

The extension creates Captchas and corresponding tokens that can be used for verification.

Installation

Install this extension with pip:

$ pip install flask-includes-captcha

Usage

Set up your app and configure a secure Captcha Key:

from flask import Flask

app = Flask(__name__)
app.config['CAPTCHA_KEY'] = "use a secure key" #change this

Import the Captcha class from this extension and initialize it with your app:

from flask_includes_captcha import FlaskCaptcha

flask_captcha = FlaskCaptcha(app)

Create a form that includes a string field for the text that should be compared and a hidden field for the web token. Implement a function that validates if the text matched with the Captcha:

from flask_wtf import FlaskForm
from wtforms import StringField, HiddenField, SubmitField, ValidationError

class ProtectedForm(FlaskForm):
    captcha_text = StringField("Characters")
    captcha_token = HiddenField()
    submit = SubmitField("Submit")
    
    def validate_captcha_text(self, field):
        if not flask_captcha.verify(self.captcha_text.data, self.captcha_token.data):
            raise ValidationError("Wrong Captcha")

Send the Captcha image and the token with the form:

from flask import render_template


@app.route('/captcha', methods=["GET", "POST"])
def captcha():
    form = ProtectedForm()

    if form.validate_on_submit():
        pass  # Start processing the form from here

    captcha = flask_captcha.create()
    form.captcha_token.data = captcha["token"]

    return render_template("form.html", captcha=captcha["image"], form=form)

The Captcha must be rendered in the template (./templates/form.html):

<img src="data:image/png;base64,{{ captcha }}" alt="CAPTCHA">

<form action="" method="post">
    {{ form.hidden_tag() }}
    {{ form.captcha_text.label }}
    {{ form.captcha_text() }}
    {{ form.captcha_token }}
    {{ form.submit }}
</form>

Dependencies

  • captcha
  • flask
  • flask-wtf
  • joserfc

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flask-includes-captcha-0.1.1.tar.gz (5.0 kB view hashes)

Uploaded Source

Built Distribution

flask_includes_captcha-0.1.1-py3-none-any.whl (4.6 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page