0

我有一个 NextJS 应用程序,我在其中实现 Supabase 进行身份验证,并尝试用 Urql 去除 Apollo。

在我的urql.ts文件中,我正在创建客户端:

import { createClient, ssrExchange, dedupExchange, fetchExchange } from 'urql';
import { cacheExchange } from '@urql/exchange-graphcache';
import { devtoolsExchange } from '@urql/devtools';

const isServerSide = typeof window === 'undefined';
const ssrCache = ssrExchange({
  isClient: !isServerSide,
  initialState: !isServerSide ? window.__URQL_DATA__ : undefined,
});

const client = createClient({
  url: '/api/graphql',
  exchanges: [
    devtoolsExchange,
    dedupExchange,
    cacheExchange({}),
    ssrCache,
    fetchExchange,
  ],
  fetchOptions: () => {
    return {
      credentials: 'include',
      headers: { Authorization: `Bearer ${token}` }, // how to return token?
    };
  },
});

export { client, ssrCache };

我想弄清楚如何实际返回令牌?因为上下文没有通过,我无法从那里拉出来。Supabase 将令牌设置为 HttpOnly,所以我相信这也阻止了我在这里访问它。使用诸如 Js-Cookie 之类的库会返回未定义。

有没有办法将上下文传递给fetchOptions,或者我应该尝试弄清楚如何在设置 cookie 时删除 HttpOnly?

4

0 回答 0