我可以通过令牌认证成功登录。但是,在获取另一个 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"
}
答案 0 :(得分:1)
您必须在所有未来请求的标头中添加令牌。
Authorization: Token <your token>
此外,您应该使用 POST 而不是 GET,因为密码将在 URL 中可见。