我是django_rest_框架的新手,正在尝试实现JWT身份验证。但是有一个问题,但是我发送了由用户名和密码创建的令牌,但是这个错误被触发了。在
{"detail":"Authentication credentials were not provided."}
生成令牌:
^{pr2}$使用生成的令牌发送新的post请求:
headers = {
'Content-Type': 'application/json',
"Authorization": "JWT" + token,
}
data = json.dumps({"content": "Hellllllllloooo"})
new_content_req = requests.post(ENDPOINT, data=data,
headers=headers)
print(new_content_req.text) // {"detail":"Authentication credentials were not provided."}
REST\u FRAMEWORK默认身份验证和权限:
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.SessionAuthentication',
'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
),
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
)
}
JWT_AUTH = {
'JWT_ENCODE_HANDLER':
'rest_framework_jwt.utils.jwt_encode_handler',
'JWT_DECODE_HANDLER':
'rest_framework_jwt.utils.jwt_decode_handler',
'JWT_PAYLOAD_HANDLER':
'rest_framework_jwt.utils.jwt_payload_handler',
'JWT_PAYLOAD_GET_USER_ID_HANDLER':
'rest_framework_jwt.utils.jwt_get_user_id_from_payload_handler',
'JWT_RESPONSE_PAYLOAD_HANDLER':
'rest_framework_jwt.utils.jwt_response_payload_handler',
'JWT_ALLOW_REFRESH': True,
'JWT_REFRESH_EXPIRATION_DELTA': datetime.timedelta(days=7),
'JWT_AUTH_HEADER_PREFIX': 'JWT',
'JWT_AUTH_COOKIE': None,
}
前缀:
'JWT_AUTH_HEADER_PREFIX': 'JWT',
'JWT_AUTH_COOKIE': None,
查看:
class StatusAPIView(mixins.CreateModelMixin, generics.ListAPIView):
permission_classes = [permissions.IsAuthenticatedOrReadOnly]
# authentication_classes = [SessionAuthentication]
queryset = Status.objects.all()
serializer_class = StatusSerializer
def post(self, request, *args, **kwargs):
return self.create(request, *args, **kwargs)
def perform_create(self, serializer):
serializer.save(user=self.request.user)
在
JWT
后添加空格相关问题 更多 >
编程相关推荐