溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

dajngo2.1用戶名和密碼都正確authticate返回None

發(fā)布時間:2020-06-08 18:04:10 來源:網(wǎng)絡 閱讀:555 作者:牛奶i豆?jié){ 欄目:編程語言

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函數(shù)如下:

    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即可,此出剛好有一個類實現(xiàn)了以上操作django.contrib.auth.backends.AllowAllUsersModelBackend.
在settings.py中重新指定后端處理類即可,如下:

AUTHENTICATION_BACKENDS = ['django.contrib.auth.backends.AllowAllUsersModelBackend']
向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI