A Django reusable app that provides validators and a form field that checks the strength of a password
Project description
django-strong-passwords is a Django application that provides a form field and validators that check the strength of a password. It is a fork of django-passwords which adds support for modern versions of Django and Python.
Installation
pip install django-strong-passwords
Compatibility
django-strong-passwords is tested with Django 3.2+ and Python 3.7+.
Settings
django-strong-passwords adds 6 optional settings
- Optional:
Specifies minimum length for passwords:
PASSWORD_MIN_LENGTH = 6 # Defaults to 6
Specifies maximum length for passwords:
PASSWORD_MAX_LENGTH = 120 # Defaults to None
Specifies the location of a dictionary (file with one word per line):
PASSWORD_DICTIONARY = "/usr/share/dict/words" # Defaults to None
Specifies how close a fuzzy match has to be to be considered a match:
PASSWORD_MATCH_THRESHOLD = 0.9 # Defaults to 0.9, should be 0.0 - 1.0 where 1.0 means exactly the same.
Specifies a list of common sequences to attempt to match a password against:
PASSWORD_COMMON_SEQUENCES = [] # Should be a list of strings, see passwords/validators.py for default
Specifies number of characters within various sets that a password must contain:
PASSWORD_COMPLEXITY = { # You can omit any or all of these for no limit for that particular set "UPPER": 1, # Uppercase "LOWER": 1, # Lowercase "LETTERS": 1, # Either uppercase or lowercase letters "DIGITS": 1, # Digits "SPECIAL": 1, # Not alphanumeric, space or punctuation character "WORDS": 1 # Words (alphanumeric sequences separated by a whitespace or punctuation character) }
Usage
To use the formfield simply import it and use it:
from django import forms
from passwords.fields import PasswordField
class ExampleForm(forms.Form):
password = PasswordField(label="Password")
You can make use of the validators on your own fields:
from django import forms
from passwords.validators import dictionary_words
field = forms.CharField(validators=[dictionary_words])
You can also create custom validator instances to specify your own field-specific configurations, rather than using the global configurations:
from django import forms
from passwords.validators import (
DictionaryValidator, LengthValidator, ComplexityValidator)
field = forms.CharField(validators=[
DictionaryValidator(words=['banned_word'], threshold=0.9),
LengthValidator(min_length=8),
ComplexityValidator(complexities=dict(
UPPER=1,
LOWER=1,
DIGITS=1
)),
])
Django’s password validation API is slightly different than the form validation API and has wrappers in the auth_password_validators module:
AUTH_PASSWORD_VALIDATORS = [
…,
{"NAME": "passwords.auth_password_validators.ComplexityValidator"}
]
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for django-strong-passwords-0.1.2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | fff3a26a73885aa362835dbc0cd03875e2e0b70e203928f1d365f3e09bff387b |
|
MD5 | 041e1a0741c707d86fdcb09c7b01ee50 |
|
BLAKE2b-256 | ebfee29277c31fe4f7d60a60cfe9cc611e444ac6155de075b964c93be510cf59 |
Hashes for django_strong_passwords-0.1.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c707a9f34534148cb93309b4274aaab2d663caa9b5e9c220a68013ee925c073d |
|
MD5 | da81bdac24aaa96c751a3ac20364d06a |
|
BLAKE2b-256 | 4e94364c0a58506e09965c8dcc3f311c22fcc09167f2b816d4b6244c7d5ddf12 |