问题描述
在我的 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,您也可以在现有的身份验证后端旁边使用它。