这对我来说非常。我正在尝试在我的Vue应用程序上进行身份验证。我正在发送登录查询,该查询返回带有查看器字段的有效负载。成功登录后,我重新加载页面。在每次更改路由时,我都实现了一个中间件,该中间件向服务器发送 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设置为“仅网络” 。
我还有另一套中间件,它针对另一条路由设置了几乎相同的目标,该路由针对不同的查询,并且工作正常。我什至可以在同一个中间件中将两个请求彼此相邻,只有一个被触发到服务器。
我正在考虑这样做的潜在原因。它可以与上一个登录查询返回查看者字段吗?
我想如果没有更多上下文,很难找到答案,但是我不确定与此相关的上下文是什么。
这是查看器类型:
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
}
}
}
}