【发布时间】:2016-07-15 14:33:45
【问题描述】:
如果您使用 Django 1.8 或更低版本,当用户更改密码时,是否可以强制执行最小密码长度?当用户在我的网站中创建他们的帐户时,我会在我的注册表单中使用自定义验证器强制设置最小密码长度。但是,当用户想要更改密码时,我会调用 Django 的 auth_views.password_change 方法,该方法指定使用的表单和验证条件。
# account/urls.py
from django.conf.urls import url
from django.contrib.auth import views as auth_views
urlpatterns = [
...
url(r'^password_change/$',
auth_views.password_change,
{'template_name': 'password_change_form.html'},
name='password_change'),
...
]
由于我没有验证他们的新密码,因此用户可以将其更改为不符合我的最小长度标准的密码。除了猴子补丁之外,还有其他方法可以进行此验证吗?这个 Stackover question 讨论了一种可行的方法,但它适用于您正在实施身份验证而我只允许经过身份验证的用户更改其现有密码的情况。我知道 Django 1.9 将通过 AUTH_PASSWORD_VALIDATORS 设置提供此功能,但在我的网站上线之前我没有时间升级到 1.9。
【问题讨论】:
-
您可以创建一个继承自
PasswordChangeForm的新表单,使用clean_new_password1自定义“new_password1”字段(添加您的验证),并在您的url{'password_change_form': CustomPasswordChangeForm}, /b> 以呈现此表单而不是默认表单。如果需要,您可以使用视图,如果有帮助,请参阅 here
标签: django django-authentication