Как обновить sh JWT токен, используя Apollo и GraphQL - PullRequest
1 голос
/ 20 апреля 2020

Итак, мы создаем приложение React-Native с использованием Apollo и GraphQL. Я использую аутентификацию на основе JWT (когда пользователь регистрируется как activeToken и refreshToken ) и хочу реализовать поток, в котором токен обновляется автоматически, когда сервер замечает, что срок его действия истек.

Документы Apollo для Apollo-Link-Error предоставляют хорошую начальную точку для отлова ошибки от ApolloClient:

onError(({ graphQLErrors, networkError, operation, forward }) => {
if (graphQLErrors) {
  for (let err of graphQLErrors) {
    switch (err.extensions.code) {
      case 'UNAUTHENTICATED':
        // error code is set to UNAUTHENTICATED
        // when AuthenticationError thrown in resolver

        // modify the operation context with a new token
        const oldHeaders = operation.getContext().headers;
        operation.setContext({
          headers: {
            ...oldHeaders,
            authorization: getNewToken(),
          },
        });
        // retry the request, returning the new observable
        return forward(operation);
    }
  }
}

Однако я действительно изо всех сил пытаюсь понять, как реализовать getNewToken () . В моей конечной точке GraphQL есть средство для создания новых токенов, но я не могу вызвать его из-за Apollo-Link-Error, верно?

Так как же вы обновите sh токен, если токен создан в GraphQL? конечная точка, к которой подключится ваш клиент Apollo?

...