在 Apollo GraphQL 客户端中,可以通过自定义链接(custom link)的方式,在上下文中传递访问令牌。下面是一个示例的实现方法:
import { ApolloLink } from 'apollo-link';
const authLink = new ApolloLink((operation, forward) => {
// 从本地存储或其他地方获取访问令牌
const token = localStorage.getItem('accessToken');
// 将访问令牌添加到请求的上下文中
operation.setContext(({ headers = {} }) => ({
headers: {
...headers,
Authorization: token ? `Bearer ${token}` : '',
},
}));
return forward(operation);
});
在上面的代码中,我们创建了一个自定义链接 authLink
,它会在每次请求发送之前将访问令牌添加到请求的上下文中。
import { ApolloClient } from 'apollo-client';
import { HttpLink } from 'apollo-link-http';
const httpLink = new HttpLink({ uri: 'https://example.com/graphql' });
const client = new ApolloClient({
link: authLink.concat(httpLink),
// 其他配置项...
});
在上面的代码中,我们使用 authLink.concat(httpLink)
将自定义链接和 HTTP 链接链接在一起,形成一个链接链。
现在,当 Apollo Client 发送请求时,自定义链接会在请求的上下文中添加访问令牌,以便服务器端可以验证用户的身份。
领取专属 10元无门槛券
手把手带您无忧上云