ホームページ > バックエンド開発 > Python チュートリアル > Django で電子メールを使用してユーザーを認証するにはどうすればよいですか?

Django で電子メールを使用してユーザーを認証するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-10-19 20:18:29
オリジナル
1063 人が閲覧しました

How to Authenticate Users with Email in Django?

電子メールによる Django 認証

Django では、デフォルトの認証メカニズムはログイン資格情報にユーザー名を利用します。ただし、特定のシナリオでは、代わりに電子メール アドレスによるユーザーの認証が必要になる場合があります。これを実現するには、カスタム認証バックエンドを作成することをお勧めします。

カスタム認証バックエンド

次の Python コードは、電子メール アドレスに基づいてユーザーを認証するカスタム認証バックエンドの例です。

<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"># 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>
ログイン後にコピー

このアプローチにより、ユーザー名を必要とせずに電子メール アドレスによるユーザー認証が可能になります。

以上がDjango で電子メールを使用してユーザーを認証するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート