rest_framework_simplejwt сообщение для APIView - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть эти настройки:

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})

С помощью топора ios Я управляю своими вызовами API, например:

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

Проблема в том, что я не могу опубликовать данные. Я получаю ошибку Unauthorized (401) и в ответном сообщении говорится: {"detail":"Authentication credentials were not provided."}

Подскажите, пожалуйста, что мне здесь не хватает и как я могу исправить эту проблему

1 Ответ

0 голосов
/ 10 апреля 2020

1 - Что такое AUTH_HEADER_TYPES в settings.py? Носитель или JWT. Если JWT, вы должны изменить тип аутентификации заголовка.

2 - Вы предоставили аутентификацию и получили токен?

Решение:

Ax ios Пост-запрос предполагает, что второй параметр это данные, а третий параметр это конфиг. Вы отправили заголовок во втором параметре. вы можете установить заголовки в конфигурации.

axios.post(url, data, config)

изменить ваш топор ios .post на:

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