在 Django 中,驗證通常使用使用者名稱執行。但是,有時需要透過電子郵件地址對使用者進行身份驗證。這提出了一個挑戰,因為 Django 在其 URL 結構中使用使用者名稱。
要克服此限制,您可以編寫自訂身份驗證後端。此後端允許您指定自己的身份驗證邏輯:
<code class="python">from django.contrib.auth import get_user_model from django.contrib.auth.backends import ModelBackend class EmailBackend(ModelBackend): def authenticate(self, request, username=None, password=None, **kwargs): UserModel = get_user_model() try: user = UserModel.objects.get(email=username) except UserModel.DoesNotExist: return None else: if user.check_password(password): return user return None</code>
此後端根據使用者的電子郵件地址和密碼對使用者進行身份驗證。
一旦您完成您的自訂後端,請在Django 設定中設定為驗證後端:
<code class="python">AUTHENTICATION_BACKENDS = ['path.to.auth.module.EmailBackend']</code>
使用自訂後端後,您可以使用使用者的電子郵件地址對使用者進行驗證:
<code class="python">email = request.POST['email'] password = request.POST['password'] user = authenticate(request, username=email, password=password)</code>
以上是如何透過電子郵件地址對 Django 使用者進行身份驗證?的詳細內容。更多資訊請關注PHP中文網其他相關文章!