如果您在使用Django 1.8或更改用户更改密码时,是否可以强制实施最小密码长度?当用户在我的网站上创建自己的帐户时,我会在注册表单中使用自定义验证程序强制执行最低密码长度。但是,当用户想要更改密码时,我会调用Django的auth_views.password_change方法,该方法指定使用的表单和验证条件。在Django版本中指定最小密码长度<= 1.8?
# 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'继承,定制“new_password1”字段'clean_new_password1'(添加验证),并添加在你的** url **中使用'{'password_change_form':CustomPasswordChangeForm}来呈现这个表单,而不是默认的表单。你可以使用视图,如果你想看到[这里](http://stackoverflow.com/questions/26457279/passwordchangeform-with-custom-user-model),如果它可以帮助 – kapilsdv