[PYTHON] Weitere neue Benutzerauthentifizierungsmethoden mit Django REST Framework

Normalerweise wird der Benutzer mit der Spalte "USERNAME_FIELD" und "password" der Klasse authentifiziert, die "AbstractBaseUser" erbt. Fügen wir eine neue Spalte mit dem Namen "login_id" hinzu, damit wir Benutzer auch mit "login_id" und "password" authentifizieren können.

1. Fügen Sie AUTHENTICATION_BACKENDS hinzu

Ich möchte die Benutzerauthentifizierung anpassen, also füge "AUTHENTICATION_BACKENDS" hinzu Siehe Referenz für "AUTHENTICATION_BACKENDS" https://docs.djangoproject.com/en/dev/ref/settings/#authentication-backends

backends.py


from django.contrib.auth.backends import ModelBackend
from project.models.user import User


class LoginIdModelBackend(ModelBackend):
    """
    login_ID- und Passwort-Login
    """
    def authenticate(self, request, username=None, password=None, **kwargs):
        try:
            login_id = kwargs.get('login_id')
            if not login_id:
                raise User.DoesNotExist
            user = User.objects.get(login_id=login_id)
        except User.DoesNotExist:
            # Run the default password hasher once to reduce the timing
            # difference between an existing and a nonexistent user (#20760).
            User().set_password(password)
        else:
            if user.check_password(password) and self.user_can_authenticate(user):
                return user

settings.py


AUTHENTICATION_BACKENDS = [
    'django.contrib.auth.backends.ModelBackend',
    'backends.LoginIdModelBackend',
]

Es wird davon ausgegangen, dass die Benutzertabelle eine login_id-Spalte enthält AUTHENTICATION_BACKENDS kann der Reihe nach aufgerufen werden, z. B. die nächste Authentifizierung, wenn die definierte Authentifizierung fehlschlägt. Führen Sie also zuerst die bisherige Authentifizierung durch. Wenn dies fehlschlägt, wird die Authentifizierung mit der Anmelde-ID ausgeführt.

2. Benutzerauthentifizierungs-API für "Anmelde-ID" und "Kennwort" hinzugefügt

views/auth.py


from rest_framework_simplejwt.views import TokenViewBase
from project import serializers


class LoginIdAuthTokenViewSet(TokenViewBase):
    serializer_class = serializers.LoginIdAuthTokenSerializer

serializer/auth.py


from rest_framework_simplejwt.serializers import TokenObtainPairSerializer


class LoginIdAuthTokenSerializer(TokenObtainPairSerializer):
    username_field = 'login_id'

    def create(self, validated_data):
        pass

    def update(self, instance, validated_data):
        pass

Bitte fügen Sie auch zu urls.py hinzu

Dieses Mal habe ich eine andere API verwendet, aber je nach Logik ist es meiner Meinung nach möglich, sich mit einer API anzumelden, beispielsweise mit einer E-Mail-Adresse oder einer Anmelde-ID.

Recommended Posts

Weitere neue Benutzerauthentifizierungsmethoden mit Django REST Framework
Erstellen Sie eine API für die Benutzerauthentifizierung mit Django REST Framework
Implementierung der Authentifizierungsfunktion in Django REST Framework mit djoser
Implementierung der benutzerdefinierten Authentifizierungsfunktion für Benutzermodelle in Django REST Framework mit djoser
Django REST Framework mit Vue.js
Melden Sie sich mit dem Django Rest Framework an
[Django] Verwenden Sie MessagePack mit dem Django REST-Framework
Erstellen Sie eine RESTful-API mit dem Django Rest Framework
CRUD GET mit Nuxt & Django REST Framework ②
CRUD POST mit Nuxt & Django REST Framework
CRUD GET mit Nuxt & Django REST Framework ①
CRUD PUT, DELETE mit Nuxt & Django REST Framework
Grundlagen des Django REST-Frameworks
Tipps zum Django Rest Framework
Erstellen Sie eine Todo-App mit Django REST Framework + Angular
Lassen Sie uns eine Todo-App mit dem Django REST-Framework erstellen
Wenn Sie mit dem Django REST-Framework filtern möchten
Implementieren Sie hierarchische URLs mit drf-verschachtelten Routern im Django REST-Framework
Django REST Framework Stolperstein
Implementierung der JWT-Authentifizierungsfunktion in Django REST Framework mit djoser
Implementierung von CRUD mithilfe der REST-API mit Python + Django Rest Framework + igGrid
Erstellen Sie eine REST-API, um dynamodb mit dem Django REST Framework zu betreiben
Wie man mit verstümmelten Charakteren in json von Django REST Framework umgeht
Logisches Löschen in Django, DRF (Django REST Framework)
Verstehen Sie den Komfort des Django Rest Framework
Ein Verwaltungstool, das sofort mit dem REST-Framework ng-admin + Django erstellt werden kann
Verschiedene Hinweise zum Django REST-Framework
Überlegungen zum Design von Django REST Framework + Clean Architecture
So generieren Sie automatisch ein API-Dokument mit dem Django REST-Framework und POST vom Dokumentbildschirm
Django: User Agent aufzeichnen und mit Admin verwalten
Django REST Framework Ein wenig nützlich zu wissen.
Implementieren Sie die JWT-Anmeldefunktion im Django REST-Framework
Manchmal möchten Sie mit DRF (Django REST Framework) auf View information from Serializer zugreifen.