微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我将如何从 graphQL apollo 突变或查询上的 cookie 更新授权标头

如何解决我将如何从 graphQL apollo 突变或查询上的 cookie 更新授权标头

我的 NextJS 应用程序有以下 _app.js。

我想通过将设置的 cookie 更改登录时的授权标头,我想我可以处理 cookie 和登录功能,但我在如何将 cookie 放入 ApolloClient 标头自动化方面遇到了困难。有没有办法传入一个突变,即带有来自 cookie 的令牌的标头。这里有什么想法吗???

我有 cookie 工作,所以我有一个登录的令牌,但我需要通过 _app.js 中的 cookie 将 apolloclient 令牌更改为新的。不确定这是如何完成的。

import "../styles/globals.css";
import { ApolloClient,ApolloProvider,InMemoryCache } from "@apollo/client";

const client = new ApolloClient({
  uri: "https://graphql.fauna.com/graphql",cache: new InMemoryCache(),headers: {
    authorization: `Bearer ${process.env.NEXT_PUBLIC_FAUNA_SECRET}`,},});

console.log(client.link.options.headers);

function MyApp({ Component,pageProps }) {
  return (
    <ApolloProvider client={client}>
      <Component {...pageProps} />
    </ApolloProvider>
  );
}

export default MyApp;

更新:我已经阅读了一些关于将其设置为通过阿波罗文档中的 cookie 的内容,但我不太明白。

const link = createHttpLink({
  uri: '/graphql',credentials: 'same-origin'
});

const client = new ApolloClient({
  cache: new InMemoryCache(),link,});

更新:所以我在上面取得了很好的进展,它允许我通过 useQuery 中的上下文,如下所示。现在唯一的问题是 cookieData 在使用查询之前加载或其他东西,因为如果我传入一个 api 密钥它可以工作,但获取的 cookie 给了我无效的 db 秘密和它相同的密钥。

const { data: cookieData,error: cookieError } = useSWR(
    "/api/cookie",fetcher
  );

  console.log(cookieData);

  // const { loading,error,data } = useQuery(FORMS);
  const { loading,data } = useQuery(FORMS,{
    context: {
      headers: {
        authorization: "Bearer " + cookieData,});

关于这个问题的任何想法都会很棒。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。