如何解决如果用户使用Apollo Rest Link收到403,注销用户的正确方法是什么?
在我的NextJS应用程序中,我将Apollo Client与GraphQL端点一起使用,并且还将另一个端点与Apollo Link Rest一起使用。我正在使用一种cookie身份验证,这种身份验证在不活动后会过期,如果用户从任何服务中收到403,我都试图注销该用户。
如果我从GraphQL服务获得403,则可以使用Apollo Link Error处理,例如logoutUser
删除Cookie并将用户重定向到登录页面。
const errorLink = onError(({ graphQLErrors,response,networkError }) => {
if (graphQLErrors) {
for (let error of graphQLErrors) {
if (error.errorType === 'Unauthorized') {
// This is how Apollo expects you to ignore the error if you've handled it
// https://www.apollographql.com/docs/react/data/error-handling/#ignoring-errors
response.errors = null;
return logoutUser({ reasonCode: LOGOUT_REASON_CODE_SESSION_EXPIRED });
}
}
}
});
我遇到的问题是我也有一个REST API,我需要从中获取数据,并且我正在使用Apollo Link Rest执行查询-但是,如果REST API返回403,那么我会得到一个Unhandled Runtime Error
,其中{ {1}}
我以为我可以在Uncaught (in promise) Error: Response not successful: Received status code 403
回调中处理此问题,
onError
但是当错误来自REST API时,// Handle RestLink Unauthorized errors
if (networkError?.statusCode === 403) {
response.errors = null;
return logoutUser({ reasonCode: LOGOUT_REASON_CODE_SESSION_EXPIRED });
}
在这种情况下未定义。
我的ApolloClient配置如下:
response
所以我一定有问题-如果使用Apollo Link Rest时REST API返回403,那么如何处理用户重定向?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。