跳转到主要内容

使用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,
            }
        }
    }
]

屏幕截图

https://cloud.githubusercontent.com/assets/3999221/23079032/5ae1513a-f54b-11e6-9d66-90660ad5fb2d.png

文档

在ReadTheDocs上

开发

运行所有测试: 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.tar.gz (419.0 kB 查看散列

上传时间:

构建分布

django_zxcvbn_password-2.1.1-py2.py3-none-any.whl (409.4 kB 查看散列

上传时间: Python 2 Python 3

由以下组织支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面