dajngo2.1用户名和密码都正确authticate返回None

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dajngo2.1用户名和密码都正确authticate返回None相关的知识,希望对你有一定的参考价值。

django2.1后默认的认证后端(django.contrib.auth.backends.ModelBackend)
而这个类中的authenticate方法中有如下代码:

    def authenticate(self, request, username=None, password=None, **kwargs):
            .....
        if user.check_password(password) and self.user_can_authenticate(user):
                return user

而且user_can_authenticate函数如下:

    def user_can_authenticate(self, user):
        is_active = getattr(user, ‘is_active‘, None)
        return is_active or is_active is None

由此可知django2.1后也会对用户的is_active进行判断,如果is_active为false,则authticate也会返回None.

要解决以上问题,只要继承django.contrib.auth.backends.ModelBackend类重写authticate方法返回True即可,此出刚好有一个类实现了以上操作django.contrib.auth.backends.AllowAllUsersModelBackend.
在settings.py中重新指定后端处理类即可,如下:

AUTHENTICATION_BACKENDS = [‘django.contrib.auth.backends.AllowAllUsersModelBackend‘]

以上是关于dajngo2.1用户名和密码都正确authticate返回None的主要内容,如果未能解决你的问题,请参考以下文章

FTP一直登录不上去 地址 用户名 密码都是正确的 以前登陆过

为啥我的用户名 密码明明都是正确的 登陆却一直显示密码错误

网络映射需要输入用户名和密码,我输入的都正确,但是不行,怎么解决呢

电脑登录用户名密码不正确怎么办

IP和FTP账号密码都正确用FlashFXP怎么连接不上呢?

win7连接局域网其它电脑的时候输入用户名和密码都是正确的,为啥总是提示错误呢?