Python 如何在Django和DRF中添加2FA
我不知道如何将2FA添加到我的django项目和DRF中? 我最终将把这个DRF与react和redux连接起来作为前端 这是我的Django一面: 型号:Python 如何在Django和DRF中添加2FA,python,django,reactjs,redux,django-rest-framework,Python,Django,Reactjs,Redux,Django Rest Framework,我不知道如何将2FA添加到我的django项目和DRF中? 我最终将把这个DRF与react和redux连接起来作为前端 这是我的Django一面: 型号: from django.contrib.auth.models import AbstractUser class User(AbstractUser): def __str__(self): return self.username 我的Django api序列化程序 # Login API class L
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
def __str__(self):
return self.username
我的Django api序列化程序
# Login API
class LoginAPI(generics.GenericAPIView):
serializer_class = LoginSerializer
def post(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
user = serializer.validated_data
return Response({
"user": UserSerializer(user, context=self.get_serializer_context()).data,
"token": AuthToken.objects.create(user)[1]
})
# Check token and send back what user is associated with that token
class UserAPI(generics.RetrieveAPIView):
permission_classes = [
permissions.IsAuthenticated,
]
serializer_class = UserSerializer
def get_object(self):
return self.request.user
我的Django URL:
from django.urls import path, include
from knox import views as knox_views
from accounts.api.views import LoginAPI, UserAPI
urlpatterns = [
path('api/auth', include('knox.urls')),
path('api/auth/login', LoginAPI.as_view()),
path('api/auth/user', UserAPI.as_view()),
path('api/auth/logout', knox_views.LogoutView.as_view(), name='knox_logout'),
我的django观点:
from rest_framework import generics, permissions
from rest_framework.response import Response
from knox.models import AuthToken
from accounts.api.serializers import LoginSerializer, UserSerializer
# Login API
class LoginAPI(generics.GenericAPIView):
serializer_class = LoginSerializer
def post(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
user = serializer.validated_data
return Response({
"user": UserSerializer(user, context=self.get_serializer_context()).data,
"token": AuthToken.objects.create(user)[1]
})
# Check token and send back what user is associated with that token
class UserAPI(generics.RetrieveAPIView):
permission_classes = [
permissions.IsAuthenticated,
]
serializer_class = UserSerializer
def get_object(self):
return self.request.user
试模法