Это очень странно для меня. Я пытаюсь заставить аутентификацию работать в моем приложении Vue. Я отправляю запрос на вход, который возвращает полезную нагрузку с полем viewer . После успешного входа я перезагрузил страницу. При каждом изменении маршрута я внедрял промежуточное ПО, которое отправляет на сервер запрос viewer , чтобы проверить, аутентифицирован ли текущий пользователь:
export const routerMiddleware: NavGuard = async (to, from, next) => {
const { data, errors } = await apollo.query<{ viewer: any }>({
query: VIEWER_QUERY,
fetchPolicy: 'network-only',
});
const viewer = data.viewer;
if (viewer) next()
else next('/app');
};
Я точно знаю, что промежуточное программное обеспечение вызывается и что запрос не попадает на сервер . Запрос возвращает data: { viewer: null }
, поэтому он, похоже, получает свои данные откуда-то, но определенно не с сервера, несмотря на то, что для fetchPolicy установлено значение «только для сети» .
У меня есть еще одно промежуточное ПО с почти идентичной настройкой для другого маршрута, который нацелен на другой запрос, и работает нормально . Я даже могу поместить оба запроса рядом в одном промежуточном программном обеспечении, и только один из них будет запущен на сервере.
Я думаю о возможных причинах этого. Может ли это быть связано с предыдущим запросом на вход, возвращающим поле viewer ?
Я думаю, что трудно найти ответ без дополнительного контекста, но я не уверен, какой контекст имеет отношение к этому.
Это зритель тип:
type Viewer {
id: ID!
name: Name
email: String!
ssn: String
phone: String
imageUrl: String
thumbnailUrl: String
language: String!
admins: [Admin!]!
employees: [Employee!]!
jobs: Jobs!
notifications: [Notification!]!
invitations: [Invitation!]!
zendeskToken: String!
}
type Query {
viewer: Viewer
}
Просмотр Запрос
{
viewer {
id
admins {
id
organisation {
id
}
}
}
}