1. 程式人生 > >django使用用戶名或手機號碼登錄

django使用用戶名或手機號碼登錄

password 號碼 exc username 手機號 lte obi then elb

django有自己的認證系統,會自動根據用戶名和密碼進行驗證。如果需要使用用戶名或手機登錄的話,需要重寫django的認證後臺,並且設置到配置文件中。

  • 重寫django的認證後臺

class UsernameMobileAuthBackend(ModelBackend):
    """用戶名或手機登錄"""

    def authenticate(self, request, username=None, password=None, **kwargs):
        """判斷用戶名(手機號碼)和密碼是否正確"""
        query_set = User.objects.filter( Q(username=username) | Q(mobile=username))
        
try: if query_set.exists(): user = query_set.get() if user.check_password(password): return user except: return None return None

  • 設置到django配置文件

# 自定義,可以手機號碼或用戶名登錄
AUTHENTICATION_BACKENDS = [user.utils.UsernameMobileAuthBackend
]

django使用用戶名或手機號碼登錄