如何在不以用户身份登录的情况下将数据发布到受限的 REST API url?

问题描述

在我的 Django 应用中。我使用 django.contrib.auth 作为用户身份验证,我也有 django rest 框架 API。

我已启用。

    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework_simplejwt.authentication.JWTAuthentication','rest_framework.authentication.SessionAuthentication',),

/api/data/ 下的@views.py

class TestView(generics.ListCreateAPIView):
    permission_classes = (IsAuthenticated,)
    serializer_class = TestSerializer
    queryset = Test.objects.all()
    filterset_class = TestFilter

    def get(self,request,*args,**kwargs):
        queryset = self.filter_queryset(self.get_queryset())
        serializer = TestSerializer(queryset,many=True)
        return Response(serializer.data)

因为,我只能通过用户帐户登录来访问 API 数据,但是在我的项目上。我有一个传感器(物联网)必须 POST 到 api 127.0.0.1/api/data/,

如何在不使会话过期的情况下验证我的传感器 (IoT) 以将 POST 请求发送到 API url?

如何在不以用户身份登录的情况下将数据发布到受限的 REST API 网址中?

谢谢!

解决方法

对于这种情况,当您需要为无法定期刷新其会话/令牌的客户端使用令牌时,您始终可以使用令牌身份验证(其中每个用户都有一个未过期的令牌可供使用。)

DjangoRestFramework 中有一个现有的解决方案,使用 Token Authentication Backend,您也可以在现有的身份验证后端旁边使用它。