【问题标题】:Apollo client JWT token is only attached after refreshApollo 客户端 JWT 令牌仅在刷新后附加
【发布时间】:2019-10-11 07:33:09
【问题描述】:

我将来自 graphql 服务器的授权令牌保存在 localStorage 上,并将令牌附加到授权标头。但是在登录后,将令牌保存到本地存储,服务器获取带有空令牌值的授权标头。但是,我可以通过浏览器的开发人员模式检查 localStorage 上是否存在令牌。刷新页面后,服务器获取正常的授权头。如何让我的 apollo 客户端在第一次尝试时发送正确的标头?以下是我的 apollo 客户端生成器。

export default new ApolloClient({
  uri: "MYSERVERENDPOINT",
  clientState: {
    defaults,
    resolvers
  },
  headers: {
    Authorization: `Bearer ${localStorage.getItem("token")}`
  }
});

【问题讨论】:

    标签: reactjs authentication jwt apollo-client


    【解决方案1】:

    通常,当您从 localStorage 获取项目时,您最好使用 async/await 来确保在返回之前获取项目。

    尝试制作一个单独的函数来同步获取项目并返回一个字符串文字并将其放入标题中。

    【讨论】:

      【解决方案2】:

      您必须在代码中手动重新加载页面。

      尝试: window.location.reload()

      【讨论】:

        【解决方案3】:

        我知道我来晚了,但我也遇到了这个问题并找到了这些

        你可以打电话

        client.clearStore();
        

        如果您在导入客户端时需要帮助

        import { useApolloClient } from "@apollo/client";
        
        const client = useApolloClient();
        

        【讨论】:

          猜你喜欢
          • 2020-08-27
          • 2022-11-29
          • 2020-08-25
          • 2019-08-16
          • 2020-02-26
          • 2020-06-01
          • 2021-10-26
          • 2021-01-15
          • 2018-12-08
          相关资源
          最近更新 更多