ищу способ передачи токена клиенту apollo через куки, а не в localalstorage - PullRequest
0 голосов
/ 25 октября 2019

я переключился с apollo-boost на apollo-client, проверил документы и обнаружил, что они устанавливают токен с помощью localStorage, но проблема в том, что у меня нет только одного токена в локальном хранилище. токен, который у меня есть, находится в браузере cookies, поэтому я в основном ищу способ передать токен из файлов cookie в apollo-client

    const httpLink = createUploadLink({
          uri: 'http://localhost:9999',
          credentials: 'include'
      });


    const authMiddleware = new ApolloLink((operation, forward) => {
            // Retrieve the authorization token from local storage.

              const token = localStorage.getItem('token');
              console.log(token); //undefined

              // Use the setContext method to set the HTTP headers.
             operation.setContext({
               headers: {
                   authorization: token ? `Bearer ${token}` : ''
                 }
        });

          // Call the next link in the middleware chain.
           return forward(operation);
      });

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

1 Ответ

0 голосов
/ 25 октября 2019

Вы можете выполнить шаги, описанные здесь для получения данных из файлов cookie: Получить файл cookie с реакцией

Так что, если вы используете js-cookie, ваша функция authMiddleware будет выглядеть следующим образом:

import Cookies from 'js-cookie';

const authMiddleware = new ApolloLink((operation, forward) => {
    // Retrieve the authorization token from browser cookies.

    const token = Cookies.get('token');
    console.log(token);

    // Use the setContext method to set the HTTP headers.
    operation.setContext({
        headers: {
            authorization: token ? `Bearer ${token}` : ''
        }
    });

    // Call the next link in the middleware chain.
    return forward(operation);
});
...