6

我试图弄清楚如何使用附加功能增强身份验证方法。

例如

  • 过期密码
  • 特殊密码格式
  • 长度要求
  • ETC...

对于网站的前端来说这很简单,但是管理面板呢?


我认为我应该覆盖用户的 Manager 对象,因为身份验证可能驻留在那里。我认为这是一个很难弄清楚的问题。

提前致谢!:)

4

2 回答 2

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_BACKENDSin settings.py

虽然这是用于身份验证,但您可以通过将用户重定向到更改密码页面(例如,如果密码正确但已过期)来完成您提到的所有密码验证操作。考虑使用消息传递框架在将用户引导至通用更改密码页面时向用户提示正在发生的事情。

于 2010-11-16T19:42:34.130 回答
0

如果您希望将密码验证内置到模型中,那么您可能需要扩展 django User 模型

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

  • 通过创建您自己的用于更改和设置密码的视图来覆盖管理员密码选项,然后将相关 URL 放在(r'^admin/', include(admin.site.urls)). 正则表达式看起来像(r'^admin/auth/user/(\d+)/password/', new_change_password).
  • Keep track of password age in a separate model and then when they expire, redirect to a change password once it expires.
于 2010-11-17T04:10:45.677 回答