Как передать токен JTW (или любую другую переменную) из родительского в распознаватель детей с помощью Aws AppSync - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь передать токен JWT своим вложенным запросам в AppSync , чтобы проверить, имеет ли пользователь право запрашивать такие данные.

Проблема в том, что AppSync не позволяет мне пересылать токен JWT из моих родительских запросов в любой дочерний распознаватель .

Пример:

mutation test {
emailSignIn(input: {email: "0@gmail.com", password: "XYZ"}) {
token
currentUser {
  id
  profilePicture {
    uuid
  }
  ... on Client {
    lastName
    pleadingList{
      id
      pleadingFiles {
        uuid
      }
      pleadingParticipantSlots {
        id
        participant {
          id
        }
      }
    }
  }

}
}
}

Здесь "profilePicture", "pleadingList", "pleadingFiles", "pleadingParticipantSlots", "member" являются подзапросами , и я хочу иметь возможность определить, кто выполняет каждый подзапрос, а не только основной / родительский запрос

Есть ли решение?

Что я уже пробовал:

Проблема в том, что когда я динамически добавляю токен к основному результату, он не всегда работает (в некотором смысле, если то, что я получаю обратно из моего запроса, это массив Item, а подзапрос - запуск для каждый элемент, тогда у меня нет доступа к токену в каждом подзапросе, потому что $ ctx.source будет только элементом без токена.

  • Я также пытался с помощью конвейера добавить токен JWT в ctx.stash, но это даже хуже, потому что ctx.stash (и ctx.args) очищаются перед любым подзапросом

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

Единственный способ заставить его работать (и это очень уродливо, и я не хочу этого делать;)) - каждый раз добавлять во внешний интерфейс токен как параметр запроса и подзапроса ...

нравится:

mutation test {
emailSignIn(input: {email: "0@gmail.com", password: "XYZ"}) {
token
currentUser {
  id
  profilePicture(token: "blablabla") {
    uuid
  }
  ... on Client {
    lastName
    pleadingList(token: "blablabla") {
      id
      pleadingFiles(token: "blablabla") {
        uuid
      }
      pleadingParticipantSlots {
        id
        participant(token: "blablabla") {
          id
        }
      }
    }
  }

}
}
}

Я немного растерян и не нахожу ничего важного в документах AWS AppSync. Там в любом случае? Или я ошибаюсь?

Спасибо

1 Ответ

0 голосов
/ 17 апреля 2019

В настоящее время AppSync не поддерживает передачу токенов JWT от родительского к дочернему распознавателю. Упомянутый вами обходной путь может быть одним из текущих вариантов.

...