【问题标题】:How to always get latest Firebase Auth Token如何始终获取最新的 Firebase 身份验证令牌
【发布时间】:2021-07-10 14:02:55
【问题描述】:

目前,我正在使用此代码获取最新的 firebase 身份验证令牌,我在带有 Apollo 或 URQL 的标头中使用它来查询要验证的其他内容...

async getToken(): Promise<any> {
  return await new Promise((resolve: any, reject: any) => {
    this.afa.onAuthStateChanged((user: any) => {
      if (user) {
        user.getIdToken(true).then((token: string) => {
          resolve(token);
        }, (e: any) => reject(e));
      }
    });
  });
}

我使用getIdToken(true) 始终确保我得到一个有效的令牌,因为令牌在一小时后过期,并且自定义声明可能会在某个时候更新。

但是,我的代码每次都会获取一个新令牌,而实际上我只需要在旧令牌过期时获取新令牌,或者令牌的自定义声明中有新信息。

我应该使用onIdTokenChanged() 的一些吗? firebase 会自动将所有这些存储在 firebase localstoreage db (IndexedDB) 中,还是我应该使用某种形式的 localstorage 并计算到期时间?

基本上,最大程度地减少令牌刷新次数以加快我的应用程序而不是每次都获取新令牌的最佳方法是什么?

谢谢,

J

【问题讨论】:

    标签: firebase firebase-authentication jwt token


    【解决方案1】:

    除非您使用带有 REST API 的自定义解决方案,否则当旧令牌过期时,firebase 客户端模块将使用刷新令牌自动刷新身份验证令牌。

    至于更新自定义声明,如果您调用云函数或用户订阅的实时数据库侦听器,您将必须通过某种方式与客户端应用程序通信,例如服务器响应(如果您基于更新它)在“外部”条件下。

    【讨论】:

      猜你喜欢
      • 2019-03-05
      • 2018-11-07
      • 2020-08-05
      • 1970-01-01
      • 1970-01-01
      • 2018-03-06
      • 2016-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多