Как WebSocketClient передает токен аутентификации в Apollo Client 3.0? - PullRequest
0 голосов
/ 04 августа 2020

Согласно официальному документу Apollo GraphQL c, Apollo Client 3.0 поддерживает аутентификацию WebSocket для своих подписок. Подписки во многих случаях должны быть аутентифицированы токеном безопасности. Со мной было то же самое. Я следил за последней версией c аутентификации через WebSocket клиента Apollo ( здесь ).

Do c:

enter image description here

My code:

import { WebSocketLink } from '@apollo/client/link/ws';

const wsLink = new WebSocketLink({
  uri: `${process.env.REACT_APP_WS_API}/graphql/`,
  options: {
    reconnect: true,
    connectionParams: {
      authToken: `${localStorage.getItem('access_token')}`
    }
  }
})

Unfortunately, this authentication doesn't work at all. graphql_jwt.exceptions.PermissionDenied error occurred in my Django backend and no authToken value was read by the backend. I've attached a screenshot of the exception below.

введите описание изображения здесь

Есть ли допустимое решение для передачи защищенного токена на WebSocketLink?

1 Ответ

0 голосов
/ 06 августа 2020

Если серверная часть ожидает токен через заголовки, WebSocketLink может не работать, потому что он отправляет connectionParams как свойство полезной нагрузки сообщения через WebSocket ( см. Код ). Чтобы заставить его работать, бэкэнд должен будет дождаться сообщения GQL_CONNECTION_INIT, чтобы получить токен.

...