【问题标题】:Firebase + custom backend: Should I retrieve jwt token on Client before every http request?Firebase + 自定义后端:我应该在每次 http 请求之前在客户端上检索 jwt 令牌吗?
【发布时间】:2026-01-05 05:45:01
【问题描述】:

我正在创建一个 Android 应用程序,我只想使用 Firebase 进行身份验证,其余部分使用我自己的后端。

我一直在关注Firebase documentation,在那里我发现了如何检索 jwt 令牌。我设法通过 POST 方法将令牌发送到我的 rest api 并使用 php JWT Firebase 库在那里验证它,现在我有点卡住了。

何时是检索令牌的正确时间? 我:

  1. 在应用程序启动时检索令牌(或注册/登录等),将其存储在变量中,这样我就不必再次检索它,然后将令牌与每个 http 请求一起发送以授权用户。
  2. 检索一次令牌并将其存储在 SharedPreferences 中。
  3. 在每次 http 请求之前,我都会检索令牌,以便它是新鲜的并且我可以确定它是有效的。
  4. 仅在应用启动时验证令牌,如果有效,则从客户端的令牌中提取用户 ID,将其存储在变量中,并在未来的 http 请求中使用该 ID 来了解发出请求的用户。

我最感兴趣的是使用第三个选项,但是用于检索令牌的代码很长,我可以想象我的代码会很快变得混乱。第四个选项对我来说在纸面上听起来很棒,但我觉得这在安全性方面真的很糟糕。

我害怕使用第一个和第二个选项,因为令牌过期时间。我可以在后端发现令牌无效,但是我必须通知客户端它无效,生成新令牌然后再次发出请求,这对我来说似乎很复杂。

我应该遵循一些常见的做法吗?我的一个例子至少是对的还是我完全错了?

在我的新工作中,我是这个发展领域的新手,找不到太多关于在这种情况下我应该如何进行的信息。我将非常感谢任何答案!

【问题讨论】:

    标签: android firebase firebase-authentication jwt firebase-admin


    【解决方案1】:

    您应该在每次 HTTP 调用之前获取 ID 令牌,并将其包含在请求中。您不必每次都刷新 ID 令牌(即无需将 true 传递给 getIdToken())。事实上,这可能会使应用程序变慢。

    选项 1 和 2 难以正确实施,因为 ID 令牌每隔一小时左右就会更改一次。选项 4 不安全。

    【讨论】:

      最近更新 更多