覆盖身份验证方法 - Django admin

时间:2010-11-16 18:05:05

标签: python django django-models django-admin django-authentication

我正在尝试弄清楚如何使用其他功能来增强身份验证方法。

e.g。

  • 密码失效
  • 特殊密码格式
  • 长度要求
  • 等...

该网站的前端非常简单,但管理面板呢?


我认为我应该覆盖User的Manager对象,因为authenticate可能位于那里。我觉得这很难理解。

提前致谢! :)

2 个答案:

答案 0 :(得分:6)

您可以按照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.

然后将课程添加到AUTHENTICATION_BACKENDS中的settings.py

虽然这是用于身份验证,但是如果密码正确但过期,您可以通过将用户重定向到更改密码页面来执行您提到的所有密码验证。考虑使用messaging framework向用户提供有关将他指向通用更改密码页时发生的事情的提示。

答案 1 :(得分:0)

如果您希望将密码验证内置到模型中,那么您可能希望extend the django User model

否则,您可以执行以下操作:

  • 通过创建自己的视图来更改和设置密码,然后将相关的URL放在(r'^admin/', include(admin.site.urls))之上,来覆盖管理员密码选项。正则表达式看起来像(r'^admin/auth/user/(\d+)/password/', new_change_password)
  • 在单独的模型中跟踪密码期限,然后在它们过期时,一旦过期就重定向到更改密码。