十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問題一站解決
django2.1后默認(rèn)的認(rèn)證后端(django.contrib.auth.backends.ModelBackend)
而這個(gè)類中的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函數(shù)如下:
def user_can_authenticate(self, user):
is_active = getattr(user, 'is_active', None)
return is_active or is_active is None由此可知django2.1后也會(huì)對(duì)用戶的is_active進(jìn)行判斷,如果is_active為false,則authticate也會(huì)返回None.
要解決以上問題,只要繼承django.contrib.auth.backends.ModelBackend類重寫authticate方法返回True即可,此出剛好有一個(gè)類實(shí)現(xiàn)了以上操作django.contrib.auth.backends.AllowAllUsersModelBackend.
在settings.py中重新指定后端處理類即可,如下:
AUTHENTICATION_BACKENDS = ['django.contrib.auth.backends.AllowAllUsersModelBackend']另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。