如何修改Django的身份验证模块?

时间:2011-07-25 05:42:34

标签: django django-authentication

我是Django的新手,我正在尝试对Django的核心身份验证模块进行一些更改。我添加了一些新代码,根据用户的电子邮件地址对authenticateModelBackend类的django.contrib.auth.backends.py方法进行身份验证,但是这个新代码似乎没有任何效果,即使我将以下内容添加到我的设置中。

AUTHENTICATION_BACKENDS = (
    'django.contrib.auth.backends.ModelBackend',
)

实际上我删除了整个authenticate方法,并且仍然可以正常登录我的Django应用程序。任何人都知道我在哪里出错了,修改Django核心认证系统的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

您应该将django.contrib.auth.backends.ModelBackend后端导入模块,将其子类化,覆盖进程中的authenticate,然后将AUTHENTICATION_BACKENDS指向您的子类。请参阅手册中writing your own authentication backend部分。实际上,你应该阅读整个页面。

不要直接改变django.contrib中的任何内容。它将在下一次升级时被吹走。对它进行子类化或寻找挂钩的方法。

当你把事情搞砸时,我并不感到惊讶。 Django的身份验证是附加功能; Django需要能够在没有它的情况下工作,因此默认为“允许”。