繁体   English   中英

使用 React 和 Django REST 框架进行身份验证

[英]Authentication with React and Django REST Framework

我想将 React 前端添加到具有 Django 后端的网站。 为此,我使用了 Django REST 框架。 但是如何防止未登录的人发送 POST 操作来添加文章? 我想将整个前端作为 React 应用程序运行,而不是在成功登录后重定向到 React 应用程序。

在 django rest 框架中,您有权限的概念 [DRF docs]

您可以在设置中默认设置特定权限,如下所示:

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.IsAuthenticated',
    ]
}

然后您可以覆盖每个视图的权限,例如:

from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
from rest_framework.views import APIView

class ExampleView(APIView):
    permission_classes = [IsAuthenticated]

    def get(self, request, format=None):
        content = {
            'status': 'request was permitted'
        }
        return Response(content)

rest_framework.permissions.IsAuthenticated不是您可以使用的唯一预定义权限 class。 有一个名为rest_framework.permissions.IsAuthenticatedOrReadOnly的权限,我认为这是您想要的:允许所有人读取访问权限,但仅对经过身份验证的用户进行写入访问权限(例如,在您的文章上发布)。

顺便说一句,一旦您设置了正确的权限,您将需要定义和配置一种身份验证方法来验证您的前端,并能够从中发送 POST 请求。 为此,您需要阅读身份验证 DRF 文档,在方法(会话身份验证、令牌身份验证等)之间进行选择,并正确配置它们。 有第三方库可以帮助您喜欢dj-rest-authdjoser

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM