【问题标题】:how to handle firebaseauth token expiration?如何处理firebaseauth令牌过期?
【发布时间】:2020-06-15 13:30:09
【问题描述】:

到目前为止,我使用 firebase 已有 2 年了,但我一直不清楚如何处理 firebasse 身份验证令牌过期。

我正在使用 android,一旦我这样做 FirebaseAuth.getInstance().signInWithCustomToken(token); 内部 firebase 会收到这样的消息:

{
   "t":"d",
   "d":{
      "r":5,
      "b":{
         "s":"ok",
         "d":{
            "auth":{
               "uid":"test",
               "token":{
                  "exp":1592230969,
                  "user_id":"test",
                  "iat":1592227369,
                  "sub":"test",
                  "aud":"test",
                  "auth_time":1592227369,
                  "iss":"https://securetoken.google.com/igibo-b0b27",
                  "firebase":{
                     "identities":{

                     },
                     "sign_in_provider":"custom"
                  }
               },
               "provider":"custom",
               "user_id":"test"
            },
            "expires":1592230969
         }
      }
   }
}

在此请求之后,将来对FirebaseAuth.getInstance().getCurrentUser() 的任何调用都将返回有关此经过身份验证的用户的信息。
在这个 json 中很清楚,这个身份验证令牌有时会过期,但我不清楚它的 firebase 行为是什么......

令牌过期后FirebaseAuth.getInstance().getCurrentUser() 会返回 null 吗?
firebase 会自动更新令牌以使其永不过期吗?
如果我需要手动监控和重新验证令牌,我该怎么做?

如果我不调试,我什至无法在任何地方找到过期信息。

【问题讨论】:

    标签: android firebase firebase-authentication


    【解决方案1】:

    Firebase 身份验证令牌在创建后一小时到期。 Firebase SDK 会在大约 55 分钟后自动刷新令牌,这意味着您通常不必自己做任何事情。只有在无法刷新令牌的情况下,当前用户才会变为 null,例如,如果该帐户已在服务器上被禁用。

    【讨论】:

    • 如果发生这种情况怎么办: 1- 新令牌 2- 用户在 1 小时内离线, 3- 用户再次在线... Firebase 将确保下一个请求仅在令牌更新后交付?还是会面临竞争条件?
    • Firebase 将在向其他服务(例如实时数据库、Cloud Firestore 或 Cloud Storage)发送操作之前刷新 ID 令牌。试一试,如果您在使用它时遇到问题,请报告。
    • 到目前为止,我使用 firebase 超过 2 年没有任何重大问题,但有时我从 prod 中的用户那里读取数据库时收到一些“权限被拒绝”,我觉得很奇怪,所以我试图找到可能的解释。令牌更新期间的竞争条件会很好
    • 顺便说一句,这将是一个非常复杂的测试,如果不进入 firebase 团队就可以尝试
    • 客户端开始刷新token到过期之间有5m的窗口。 当然可能令牌在刷新成功之前过期,但在这种情况下,我希望客户端明确地将用户标记为已注销(即通过触发其onAuthStateChanged 事件并通过将currentUser 设置为空)。
    猜你喜欢
    • 2021-12-31
    • 1970-01-01
    • 2016-11-13
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2019-03-21
    • 1970-01-01
    • 2021-09-06
    相关资源
    最近更新 更多