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 中国語 Web サイトの他の関連記事を参照してください。