React Firebase 防止 axios 中的令牌过期

Posted

技术标签:

【中文标题】React Firebase 防止 axios 中的令牌过期【英文标题】:React Firebase prevent token expiration in axios 【发布时间】:2021-05-01 13:26:08 【问题描述】:

我有一个使用 Firebase 身份验证和 Express 后端的 React 应用。

由于idToken的持续时间是1小时,如果idToken过期了,我想刷新一下。

我了解到firebase.auth().currentUser.getIdToken() 会给我当前的 idToken。但是,如果过期了,就会生成一个新的。

所以,我在 Axios 中添加了一个拦截器:

axios.interceptors.request.use(async (config) => 
  await firebase.auth().currentUser.getIdToken();
  return config;
);

但是,1 小时后我仍然收到错误消息。我错过了什么?

【问题讨论】:

嘿,责任。您对此有进一步了解吗?我试图在下面提供答案。你检查了吗,它有意义吗? 【参考方案1】:

大多数 Firebase SDK 从当前用户那里获取 ID 令牌,并在他们调用服务器时将其传递,然后服务器使用它来处理他们的(相对短暂的)请求。所以我通常会推荐这样的方法。

但是,如果您想检测何时生成了新的 ID 令牌,以便您可以以不同的方式将其传递给您的后端代码,请使用 onIdTokenChanged listener。每当客户端从服务器获取新的 ID 令牌时,都会调用它。

【讨论】:

以上是关于React Firebase 防止 axios 中的令牌过期的主要内容,如果未能解决你的问题,请参考以下文章

使用 React 和 Axios 更新 Firebase 中的数据

如何在反应项目和 Firebase 中使用带有 axios 的删除请求?

使用 Axios 和 Firebase 时出现 401 未经授权的错误

如何保存我最近用 axios 创建的 firebase 中的数据并做出反应?

防止 axios/fetch 重定向

将状态发布到Firebase