rest_framework_simplejwt post 到 APIView
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 } })
现在的问题是,我无法 post 数据。我收到 Unauthorized (401) 错误,在响应消息中显示:{"detail":"Authentication credentials were not provided."}
你能告诉我,我在这里遗漏了什么吗?我该如何解决这个问题?
1- settings.py 中的 AUTH_HEADER_TYPES 是什么?承载或智威汤逊。如果是 JWT,您必须更改 header 身份验证类型。
2- 您是否提供了身份验证并获取令牌?
解决方案:
axios Post请求假设第二个参数是data,第三个参数是config。您在第二个参数中发送了 header。您可以在配置中设置 headers。
axios.post(url, data, config)
将您的 axios.post 更改为:
axios.post('api/config/?config', { data: obj }, {
headers: { Authorization: 'Bearer ' + rootState.auth.jwtToken }})
我有这个设置:
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 } })
现在的问题是,我无法 post 数据。我收到 Unauthorized (401) 错误,在响应消息中显示:{"detail":"Authentication credentials were not provided."}
你能告诉我,我在这里遗漏了什么吗?我该如何解决这个问题?
1- settings.py 中的 AUTH_HEADER_TYPES 是什么?承载或智威汤逊。如果是 JWT,您必须更改 header 身份验证类型。
2- 您是否提供了身份验证并获取令牌?
解决方案:
axios Post请求假设第二个参数是data,第三个参数是config。您在第二个参数中发送了 header。您可以在配置中设置 headers。
axios.post(url, data, config)
将您的 axios.post 更改为:
axios.post('api/config/?config', { data: obj }, {
headers: { Authorization: 'Bearer ' + rootState.auth.jwtToken }})