rest_framework_simplejwt post to an APIView



我有这样的设置:

REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.IsAuthenticated',
],
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework_simplejwt.authentication.JWTAuthentication',
]
}

这个观点:

class Config(APIView):
def get(self, request, *args, **kwargs):
if 'config' in request.GET.dict():
if os.path.isfile(settings.CONFIG):
yaml = read_config(settings.CONFIG)
return Response(yaml)
else:
return Response({
"success": False,
"error": "config file not found!"})
else:
return Response({"success": False})
def post(self, request, *args, **kwargs):
if 'data' in request.data:
print(request.data['data'])
return Response({"success": False})

使用axios,我可以管理我的api调用,例如:

axios.post('api/config/?config', { data: obj, headers: { Authorization: 'Bearer ' + rootState.auth.jwtToken } })

现在的问题是,我不能发布数据。我收到一个未经授权(401(错误,在响应消息中显示:{"detail":"Authentication credentials were not provided."}

你能告诉我,我在这里缺少什么吗?我该如何解决这个问题?

1-settings.py中的AUTH_HEADER_TYPES是什么?Bearer或JWT。如果是JWT,则必须更改标头身份验证类型。

2-您是否提供了身份验证和获取令牌?

解决方案:

Axios Post请求假定第二个参数为data,第三个参数为config。您在第二个参数中发送了标头。您可以在配置中设置标题。

axios.post(url, data, config)

将您的axios.post更改为:

axios.post('api/config/?config', { data: obj }, {
headers: { Authorization: 'Bearer ' + rootState.auth.jwtToken }})

相关内容

最新更新