使用ZXCVBN进行后端和前端密码验证。
项目描述
Django ZXCVBN Password
使用ZXCVBN进行后端和前端密码验证。
pirandig的django-zxcvbn和aj-may的django-password-strength Django应用的结合。它结合了后端和前端验证以及强度计显示。
许可证
软件许可协议为ISC许可证。
安装
pip install django-zxcvbn-password
需求
此应用程序的JavaScript代码使用JQuery,但它不包含JQuery。请单独安装它。您可能还想使用Bootstrap。
使用方法
# settings.py
INSTALLED_APPS = [
...
'zxcvbn_password',
...
]
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
{
'NAME': 'zxcvbn_password.ZXCVBNValidator',
'OPTIONS': {
'min_score': 3,
'user_attributes': ('username', 'email', 'first_name', 'last_name')
}
}
]
# forms.py
from django import forms
from zxcvbn_password.fields import PasswordField, PasswordConfirmationField
class RegisterForm(forms.Form):
password1 = PasswordField()
password2 = PasswordConfirmationField(confirm_with=’password1’)
# views.py
if form.is_valid():
user = User.objects.create_user(
username=...,
password=form.cleaned_data['password1']
)
默认情况下,其他输入不会用于计算分数,但您可以强制执行如下
# forms.py
from django import forms
from zxcvbn_password import zxcvbn
from zxcvbn_password.fields import PasswordField, PasswordConfirmationField
class RegisterForm(forms.Form):
password1 = PasswordField()
password2 = PasswordConfirmationField(confirm_with=’password1’)
def clean(self):
password = self.cleaned_data.get('password1')
other_field1 = ...
other_field2 = ...
if password:
score = zxcvbn(password, [other_field1, other_field2])['score']
# score is between 0 and 4
# raise forms.ValidationError if needed
return self.cleaned_data
自定义频率列表
zxcvbn-python提供添加自定义频率列表的功能,您可以通过在AUTH_PASSWORD_VALIDATORS中添加frequency_lists来指定自己的自定义频率列表,其中dutch_words是字符串列表
# settings.py
AUTH_PASSWORD_VALIDATORS = [
...
{
'NAME': 'zxcvbn_password.ZXCVBNValidator',
'OPTIONS': {
'frequency_lists': {
'dutch': dutch_words,
}
}
}
]
屏幕截图
文档
开发
运行所有测试: tox
类似项目
您应该检查django-zxcvbn-password-validator,仅用于后端验证,但具有良好的用户体验和翻译的消息。
变更日志
2.1.1 (2021-12-16)
避免使用废弃的ugettext(PR #143)。
2.1.0 (2019-12-15)
允许在ZXCVBNValidator选项中指定频率列表(baa47cd)。
将警告作为validationErrors返回,创建警告/建议列表以作为ValidationError(s)返回,修复翻译(12946bb)。
2.0.3 (2019-02-21)
将包python-zxcvbn的新位置使用,现在为zxcvbn(2ea1b69)。
2.0.2 (2018-08-21)
已记录
改进使用说明(7a1ed42)。相关问题/PR:#31。
已修复
修复PasswordConfirmationInput中的super调用(fc551b8)。
改进密码验证器的帮助文本(c5d21a1)。相关问题/PR:#46。
只有当强度分数高于最小分数时,强度条颜色才会变为绿色(9a44fd8)。相关问题/PR:#3。
测试
添加django 1.11测试(815aaef)。
添加py37/pypy加django 2.0测试,移除py34测试(05711cd)。
2.0.1 (2017-02-17)
修复PasswordStrengthInput中的super调用。
2.0.0 (2017-02-17)
放弃对Django 1.8的支持,转而使用在Django 1.9中引入的AUTH_PASSWORD_VALIDATORS设置。
将zxcvbn更新到较新版本(dwolfhub/zxcvbn-python在GitHub上)。
更新JavaScript代码到最新版本。
删除所有设置(它们现在都在AUTH_PASSWORD_VALIDATOR选项中)。
将许可协议更改为ISC。
感谢Nick Stefan和Daniel Wolf。
1.1.0 (2016-10-18)
将项目Cookiecutter化。
1.0.5 (2015-03-31)
我不记得。
1.0.3 (2015-03-12)
将README转换为rst。
修复清单规则。
1.0.2 (2015-03-12)
将包名从django_zxcvbn_password更改为zxcvbn_password。
1.0.0 (2015-02-21)
在PyPI上发布Beta版本。
0.1.0 (2015-02-01)
在PyPI上发布Alpha版本。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分布
构建分布
散列为django_zxcvbn_password-2.1.1-py2.py3-none-any.whl
算法 | 散列摘要 | |
---|---|---|
SHA256 | f0135773a737cfb29fe67420464e2483afc41472aab15cbd3cac5dacbcd69d9b |
|
MD5 | df03d18483114ee9e6edab34b91a6d81 |
|
BLAKE2b-256 | a870eec479706df53b1d4691cdbdc293216f7c2fbccf00a56d708e33c6502e71 |