我是Django的新手,我正在尝试对Django的核心身份验证模块进行一些更改。我添加了一些新代码,根据用户的电子邮件地址对authenticate
中ModelBackend
类的django.contrib.auth.backends.py
方法进行身份验证,但是这个新代码似乎没有任何效果,即使我将以下内容添加到我的设置中。
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
)
实际上我删除了整个authenticate
方法,并且仍然可以正常登录我的Django应用程序。任何人都知道我在哪里出错了,修改Django核心认证系统的最佳方法是什么?
答案 0 :(得分:2)
您应该将django.contrib.auth.backends.ModelBackend
后端导入模块,将其子类化,覆盖进程中的authenticate
,然后将AUTHENTICATION_BACKENDS
指向您的子类。请参阅手册中writing your own authentication backend部分。实际上,你应该阅读整个页面。
不要直接改变django.contrib
中的任何内容。它将在下一次升级时被吹走。对它进行子类化或寻找挂钩的方法。
当你把事情搞砸时,我并不感到惊讶。 Django的身份验证是附加功能; Django需要能够在没有它的情况下工作,因此默认为“允许”。