Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tethik/flask-session-captcha
A captcha implemention for flask
https://github.com/tethik/flask-session-captcha
captcha flask
Last synced: 1 day ago
JSON representation
A captcha implemention for flask
- Host: GitHub
- URL: https://github.com/tethik/flask-session-captcha
- Owner: Tethik
- License: mit
- Created: 2017-07-02T16:41:03.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2024-10-28T17:13:30.000Z (about 2 months ago)
- Last Synced: 2024-12-22T19:15:27.762Z (1 day ago)
- Topics: captcha, flask
- Language: Python
- Size: 427 KB
- Stars: 24
- Watchers: 4
- Forks: 8
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# flask-session-captcha
[![Latest version](https://img.shields.io/pypi/v/flask-session-captcha.svg)](https://pypi.python.org/pypi/flask-session-captcha)
[![Supported python versions](https://img.shields.io/pypi/pyversions/flask-session-captcha.svg)](https://pypi.python.org/pypi/flask-session-captcha)
[![License](https://img.shields.io/github/license/Tethik/flask-session-captcha.svg)](https://github.com/Tethik/flask-session-captcha/blob/master/LICENSE)[![Downloads](https://static.pepy.tech/badge/flask-session-captcha)](https://pepy.tech/project/flask-session-captcha)
[![Downloads](https://static.pepy.tech/badge/flask-session-captcha/month)](https://pepy.tech/project/flask-session-captcha)
[![Downloads](https://static.pepy.tech/badge/flask-session-captcha/week)](https://pepy.tech/project/flask-session-captcha)****
A captcha implemention for flask using [flask-session](https://pypi.python.org/pypi/Flask-Session/) and [captcha](https://pypi.python.org/pypi/captcha/) packages.
Each captcha challenge answer is saved in the server side session of the challenged client.
Support for different types of captchas such as numeric/letter/symbol captchas.## Requirements
* [Flask](https://pypi.python.org/pypi/Flask/)
* [flask-session](https://pypi.python.org/pypi/Flask-Session/) with packages depending on which SESSION_TYPE you use. E.g. sqlalchemy requires flask-sqlalchemy.
* [captcha](https://pypi.python.org/pypi/captcha/)## Changelog
* **1.5.0** - adds two new methods `revoke_answer` and `set_answer` to plugin `FlaskSessionCaptcha` class. Removes `set_in_session` method.
* **1.4.2** - Bump pillow from 10.2.0 to 10.3.0 by @dependabot in #49
* **1.4.1** - Fix error thrown when flask-session-captcha is init-ed without a Flask app object. Rename CAPTCHA_LOG environment variable to CAPTCHA_DEBUG_LOG.
* **1.4.0** - Migrated from `flask-sessionstore` to `flask-session`. Added functionality for alphabetic and punctuation characters to be included in the captcha (thanks @alisharify7). Support moved to python 3.8, 3.9, 3.10, 3.11.## Usage
```python
import uuid
import logging
from flask import Flask, request, render_template
from flask_session import Session
from flask_session_captcha import FlaskSessionCaptchaapp = Flask(__name__)
app.config["SECRET_KEY"] = uuid.uuid4().hex# captcha configs:
app.config['CAPTCHA_ENABLE'] = True
app.config['CAPTCHA_LENGTH'] = 5
app.config['CAPTCHA_WIDTH'] = 200
app.config['CAPTCHA_HEIGHT'] = 160
# app.config['CAPTCHA_LOG'] = False # log information to terminal
# app.config['CAPTCHA_INCLUDE_ALPHABET'] = False
# app.config['CAPTCHA_INCLUDE_NUMERIC'] = True
# app.config['CAPTCHA_INCLUDE_PUNCTUATION'] = False
# app.config['CAPTCHA_SESSION_KEY'] = 'captcha_image' # In case you want to use another key in your session to store the captcha# session config
app.config['SESSION_TYPE'] = 'redis' # or other type of drivers for session, see https://flask-session.readthedocs.io/en/latest/
Session(app)
captcha = FlaskSessionCaptcha(app)@app.route('/', methods=['POST','GET'])
def some_route():
if request.method == "POST":
if captcha.validate():
return "captcha validated successfully"
else:
return "invalid captcha/answer"return render_template("form.html")
if __name__ == "__main__":
app.run(debug=True)
```Template can look as follows. `captcha.validate()` will be default try to validate against a form input with name "captcha".
```html
{{ captcha() }}
```
It can also take a `css_class` argument to add classes to the generated DOM:
```html
{{ captcha(css_class="captcha") }}
```
You can also override settings for the captcha contents itself, via `include_alphabet`, `include_numeric` and `include_punctuation`.
Like so:```html
{{ captcha(include_alphabet=True) }}
```