在带有Django CBV Login(LoginView)的Reaction原生登录组件中创建身份验证的正确方式是什么.

我需要使用DRF编写API吗?

或者我可以只获取POST请求到.../请输入用户名和密码登录

推荐答案

您通常会使用Django rest框架(DRF)来处理API上的身份验证.用于分离、安全和基于令牌的身份验证.

为此,您将创建一个用于身份验证的自定义API端点.您可以使用DRF的TokenAuthentication或像dj-rest-auth这样的第三方包,这些包提供一组rest API视图来处理身份验证任务.

DRF登录函数的示例代码:

from rest_framework.authtoken.models import Token
from rest_framework.views import APIView
from rest_framework.response import Response
from django.contrib.auth import authenticate

class CustomLoginView(APIView):
    def post(self, request, *args, **kwargs):
        username = request.data.get('username')
        password = request.data.get('password')
        user = authenticate(username=username, password=password)
        if user:
            token, _ = Token.objects.get_or_create(user=user)
            return Response({'token': token.key})
        return Response({'error': 'Invalid Credentials'}, status=400)

在Reaction Native端,您将创建一个捕获用户名和密码的表单.当用户提交表单时,应用程序使用用户名和密码向Django服务器的身份验证端点发出POST请求.

Python-3.x相关问答推荐

被多个\n拆分并保留

将字符串转换为python日期时间时出错

没有这样的命令';角色';-可靠分子

继承自 Counter 与 dict 的类实例的 Deepcopy

从一列字符串中提取子字符串并将它们放入列表中

从 LeetCode 的 Python 解决方案类中理解关键字 self

合并所有文件并获取特定列数据

提取图像中的背景并保存

如何键入提示函数,在 Python 中通过类decorator 添加到类中

裁剪复数以解决 exp 中的溢出错误

使用正则表达式提取字符串之间的文本

Python BeautifulSoup:在 Select 语句中排除其他标签

Pandas数据单调行为

多个返回函数的列表理解?

使用 Sympy 方程进行绘图

PIL 在图像上绘制半透明方形覆盖

如何使用 Python 订阅 Websocket API 通道?

如何将python日志(log)级别名称转换为整数代码

如何使用 Celery 和 Django 将任务路由到不同的队列

selenium.common.exceptions.SessionNotCreatedException:消息:未创建会话:Chrome 版本必须在 70 到 73 之间,使用 ChromeDriver