在DRF中确定IsAuthenticated使用DRF-JWT检索Postman的列表测试

时间:2017-10-31 00:06:36

标签: django rest api django-rest-framework jwt

所以我使用DRF JWT进行身份验证。用户提交凭证,如果有效,则使用存储在sessionStorage中的JWT进行响应。每当用户导航受保护的路由时,JWT /api/auth/refresh都会刷新令牌(如果令牌仍然有效)。

无论如何,根据DRF,根据用户是否为IsAuthenticated,从身份验证转移到受保护的路由,其中​​检索数据。问题是我很难弄清楚如何在没有用户提供凭证的情况下确定DRF中的IsAuthenticated。我现在应该提一下,我正在和Postman一起测试。

API网址:

/api/help/questions

我认为:

class GetQuestionsAPIView(ListAPIView):
    queryset = Help.objects.all()
    serializer_class = GetQuestionsSerializer
    permission_classes = [IsAuthenticated,]

序列化器是:

class GetQuestionsSerializer(ModelSerializer):

    class Meta:
        model = Help
        fields = '__all__'

    def validate(self, data):
        return data

我有来自/api/auth/signin/的有效令牌。我试图将其传递到/api/help/questions/路线以检索问题列表。

GET /api/help/questions/无法正常工作,因为它需要凭据。 Authentication credentials were not provided.

GET /api/help/questions/ Content-type: application/json和'授权and the token in the header also says未提供身份验证凭据。

可能它应该是POST,因为我提交凭据并期望问题作为服务器响应,如果身份验证有效,但结果几乎相同。

我显然不是这方面最了解的人,所以任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

您是否将令牌放入授权标头? 因此,在您登录后,您将获得一个令牌,您应该将其放在受保护网址请求的标题内,如下所示:

Authorization: JWT <your_token>

以下是使用curl的示例:

curl -H "Authorization: JWT <your_token>" http://localhost:8000/protected-url/