Dalam Django, mekanisme pengesahan lalai menggunakan nama pengguna untuk bukti kelayakan log masuk. Walau bagaimanapun, senario tertentu mungkin memerlukan pengesahan pengguna melalui alamat e-mel mereka. Untuk mencapai matlamat ini, mencipta bahagian belakang pengesahan tersuai ialah pendekatan yang disyorkan.
Kod Python berikut menunjukkan bahagian belakang pengesahan tersuai yang mengesahkan pengguna berdasarkan alamat e-mel mereka:
<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>
Untuk menggunakan bahagian belakang pengesahan tersuai, tambahkan perkara berikut pada tetapan projek Django anda:
<code class="python">AUTHENTICATION_BACKENDS = ['path.to.auth.module.EmailBackend']</code>
Dengan bahagian belakang pengesahan tersuai di tempat, anda boleh mengesahkan pengguna melalui e-mel menggunakan langkah berikut:
<code class="python"># Get email and password from the request email = request.POST['email'] password = request.POST['password'] # Authenticate the user user = authenticate(username=email, password=password) # Log in the user if authentication was successful if user is not None: login(request, user)</code>
Pendekatan ini membolehkan pengesahan pengguna melalui alamat e-mel mereka tanpa memerlukan nama pengguna.
Atas ialah kandungan terperinci Bagaimana untuk Mengesahkan Pengguna dengan E-mel dalam Django?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!