我正在尝试找出如何增强验证方法以实现额外的功能,例如:
- 密码到期 - 特殊密码格式 - 长度要求 - 等等...
对于网站前端而言,这是相当直接的。但是管理员面板呢?
我认为应该重写用户管理对象,因为验证可能驻留在那里。我认为这很难解决。
谢谢! :)
- 密码到期 - 特殊密码格式 - 长度要求 - 等等...
对于网站前端而言,这是相当直接的。但是管理员面板呢?
我认为应该重写用户管理对象,因为验证可能驻留在那里。我认为这很难解决。
谢谢! :)
您可以按照http://docs.djangoproject.com/en/dev/topics/auth/#authentication-backends中的说明创建自定义身份验证后端。基本上,您需要创建一个具有authenticate
方法的后端类:
class MyBackend:
def authenticate(self, username=None, password=None):
# Check the username/password and return a User.
settings.py
中的AUTHENTICATION_BACKENDS
中添加该类。虽然这是用于身份验证的,但如果需要,您可以通过将用户重定向到更改密码页面来执行所有密码验证操作,例如,如果密码正确但已过期。考虑使用消息框架,在将用户引导到通用更改密码页面时,向用户提供有关正在发生的事情的提示。如果您希望密码验证内置于模型中,则可能需要扩展django用户模型。
否则,您可以执行以下操作:
(r'^admin/', include(admin.site.urls))
上方。正则表达式类似于(r'^admin/auth/user/(\d+)/password/', new_change_password)
。HttpResponseRedirect
将用户重定向到更改密码页面的URL。我认为,如果你查看django/contrib/auth的urls文件,你就可以找到要使用的URL名称。 - Jordan Reiter
User
模型的set_password
方法进行 monkey-patching。 - eddie_c