登录后要求进行身份验证的Django Rest Framework

时间:2021-05-11 19:47:42

标签: django django-rest-framework django-authentication django-serializer

我可以通过令牌认证成功登录。但是,在获取另一个 API 时,它要求进行身份验证。

{"detail":"Authentication credentials were not provided."}

views.py

class CreateQuiz(generics.ListCreateAPIView):    
    serializer_class = QuizSerializer
    authentication_classes = (TokenAuthentication,)
    permission_classes =(IsAuthenticated,)
        
    def get_queryset(self):    
        return somequeryset

settings.py

REST_FRAMEWORK ={
     'DEFAULT_AUTHENTICATION_CLASSES': (
    'knox.auth.TokenAuthentication',
    ),

}



from datetime import timedelta

REST_KNOX ={
    'USER_SERIALZIER' :'api.serializer.UserSerializer',
    'TOKEN_TTL': timedelta(hours=24*7),
}

当我在 postman 上测试 http://127.0.0.0.1:8000/apis/v1/login/?username=xxxx.com&password=xxxx 时,我成功通过身份验证并返回

{
    "expiry": "2021-05-18T19:46:33.841420Z",
    "token": "f07a35897b070eabfcf1439c4495b8cede5fd9908135692e2c516127a926f2ab"
}

1 个答案:

答案 0 :(得分:1)

您必须在所有未来请求的标头中添加令牌。

Authorization: Token <your token>

此外,您应该使用 POST 而不是 GET,因为密码将在 URL 中可见。