Невозможно установить заголовки аутентификации, используя Apollo Client 3 и setContext (apollo-link-context) - PullRequest
0 голосов
/ 24 марта 2020

Поэтому я пытаюсь передать заголовок авторизации в Apollo Client 3 для доступа к базе данных. Рекомендуемый способ сделать это в текущих документах - создать объект HttpLink

const httpLink = new HttpLink({
  uri: "************************",
  fetch
});

и затем использовать метод setContext (я думаю, из 'http-link-context'):

const authLink = setContext((_, { headers, ...context }) => {
  const token = localStorage.getItem("userToken");
  return {
    headers: {
      ...headers,
      ...(token
        ? { Authorization: `Bearer ${token}` }
        : `Bearer *************************`)
    },
    ...context
  };
});

затем привейте объекты вместе и передайте их как объект "ссылки" новому ApolloClient:

const client = new ApolloClient({
  cache: new InMemoryCache(),
  link: authLink.concat(httpLink)
});

К сожалению, однако, когда я делаю это, я получаю сообщение об ошибке

Uncaught (in promise) Error: GraphQL error: Missing authorization header.

И когда я проверяю заголовки своих запросов, я не вижу заголовок авторизации.

Кто-нибудь еще смог запустить и успешно запустить?

1 Ответ

0 голосов
/ 24 марта 2020

Очень досадно, что пример, который они приводят в документации Аполлона, не показывает импорт для setContext, поэтому требуемый пакет не следует импортировать из «http-link-context», а вместо этого из «@ apollo / link-context» при использовании последней версия Аполлона (или Аполлона-3, во всяком случае). Используя текущий пакет, он работает нормально.

...