【发布时间】:2011-05-10 23:44:52
【问题描述】:
我正在尝试弄清楚如何使用附加功能来增强身份验证方法。
例如
- 密码过期
- 特殊密码格式
- 长度要求
- 等等……
网站的前端非常简单,但管理面板呢?
我认为我应该覆盖用户的管理器对象,因为身份验证可能驻留在那里。我认为这很难弄清楚。
提前致谢! :)
【问题讨论】:
标签: python django django-models django-admin django-authentication
我正在尝试弄清楚如何使用附加功能来增强身份验证方法。
例如
网站的前端非常简单,但管理面板呢?
我认为我应该覆盖用户的管理器对象,因为身份验证可能驻留在那里。我认为这很难弄清楚。
提前致谢! :)
【问题讨论】:
标签: python django django-models django-admin django-authentication
您可以按照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。
虽然这是用于身份验证,但您可以执行您提到的所有密码验证操作,例如,如果密码正确但已过期,只需将用户重定向到更改密码页面即可。考虑使用messaging framework 向用户提示在将他引导至通用更改密码页面时发生了什么。
【讨论】:
User模型的set_password方法的monkey-patching。
如果您希望将密码验证内置到模型中,那么您可能需要extend the django User model。
否则,您可以执行以下操作:
(r'^admin/', include(admin.site.urls)) 上方。正则表达式看起来像(r'^admin/auth/user/(\d+)/password/', new_change_password)。 【讨论】:
HttpResponseRedirect 将用户重定向到更改密码页面的url。我认为如果您查看 django/contrib/auth 的 urls 文件,那么您可以找到要使用的 url 名称。