【发布时间】:2020-06-22 06:45:44
【问题描述】:
场景是:
- Web 应用已打开,但令牌已过期。
- 然后用户执行一些操作来发出 api 请求。
- GraphQL 返回
Error: GraphQL error: unauthorized。 - 由于错误,应用程序没有响应。糟糕的用户体验。
-
来自
apollo-link-error方法的onError捕获了错误,并由此能够调用refreshToken()(它需要一个过期的jwt)。 - 生成并存储新令牌以供使用。
- 下一个用户操作将照常进行。
这是我目前的代码:
const errorLink = onError(({ graphQLErrors, networkError }) => {
if (graphQLErrors) {
refreshToken();
}
});
const link = ApolloLink.from([errorLink, terminatingLink]);
我们如何改进此流程,以便在用户发出请求时刷新令牌而不会出现错误?如果它导致错误,那么像请求之类的东西会被“搁置”,然后一旦刷新令牌,就会处理它。但我不知道该怎么做。
或者有什么其他方法可以改进这个流程?
【问题讨论】:
标签: error-handling graphql jwt access-token refresh-token