2
我正在使用Django rest框架-JWT進行身份驗證來處理受保護的url,我試圖通過使用IsAutchinted
類來保護UserDetail視圖但是每次我試圖發送生成的令牌我得到如下回應django-restframework-jwt使用JWT令牌時要求輸入用戶名/密碼
{
"username": [
"This field is required."
],
"password": [
"This field is required."
]
}
我已經包含了Authorization頭,正如我在我的頭前綴爲「智威湯遜」
curl -H "Authorization: JWT <token>" -X PUT http://localhost:8000/user/3/ -d '{"first_name":"curl_test"}'
的已設置獲取JWT令牌,刷新,確認ls工作正常並且生成鏈接,我只是無法讓JWT使用令牌來驗證用戶名和密碼,而不是用戶名和密碼。
這裏是我的用戶信息
class UserDetail(APIView):
permission_classes = (IsOwner, IsAuthenticated)
"""
Retrieve, update or delete a user instance.
"""
def get_object(self, pk):
try:
return User.objects.get(pk=pk)
except User.DoesNotExist:
raise Http404
def get(self, request, pk, format=None):
user = self.get_object(pk)
serializer = UserSerializer(user)
return Response(serializer.data)
def put(self, request, pk, format=None):
user = self.get_object(pk)
serializer = UserSerializer(user, data=request.data)
if serializer.is_valid():
serializer.save()
user = Profile.objects.get(id=pk)
user.profile.updated = timezone.now()
user.save()
return Response(serializer.data, status=status.HTTP_200_OK)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def delete(self, request, pk, format=None):
user = self.get_object(pk)
user.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
我在做什麼錯誤的觀點?爲什麼即使令牌包含在頭文件中,它仍然要求輸入用戶名和密碼?
是我在做IsAutchinted類的方式是否正確?或者這可能是JWT不工作的原因,因爲我正在使用rest框架權限類?
更新:我的settings.py
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
'rest_framework.authentication.BasicAuthentication',
'rest_framework.authentication.SessionAuthentication',
),
'DEFAULT_PARSER_CLASSES': (
'rest_framework.parsers.FormParser',
'rest_framework.parsers.MultiPartParser',
'rest_framework.parsers.JSONParser',
)
}
行你怎麼配置Django的設置休息框架?尤其是'DEFAULT_AUTHENTICATION_CLASSES'選項。 – hoefling
我已添加到我的問題,請看看。 – Abdul
有趣 - 你可以用'JSONWebTokenAuthentication'測試嗎?爲測試目的簡單評論'BasicAuthentication'和'SessionAuthentication',你能訪問頁面嗎? – hoefling