我可以使用 Firebase 令牌 (JWT) 来识别过期日期超过 1 小时的用户吗?

Can i use a Firebase token (JWT) to identify a user with an expire date > than 1 hour?

我正在使用 Cloud Firestore for Firebase 来存储有关用 NodeJs 编写的 Rest API 服务的信息。

因此,对 Node 的每个请求都会向 Firebase 询问有关该服务的信息,并且首先,它会授权 请求。

我认为使用用户生成的 JWT 将是最好的解决方案,因为客户端只需在其请求中包含 JWT 即可授权自己。

一个Firebase JWT与生成它的用户的uid有关。 显然,会有一个控制面板,用户可以在其中使用 email/pw 登录并生成 JWT,然后 JWT 将包含在他的客户端系统中,例如像简单的 APIs 需要API 用于识别用户和工作的密钥。

所以,这个想法似乎很有效,但我注意到 Firebase JWT 在 仅 1 小时后过期! 用户必须每隔一小时登录一次控制面板,重新生成 JWT。这么不友好。

如何避免这个问题?如何让 JWT 过期超过 1 小时?

根据documentation

The maximum lifetime of a token is 24 hours + skew.

[...]

with a skew of up to 10 minutes.

这意味着您不能永远使用这些令牌,这是有道理的。

我查看了 custom tokens 并发现:

The time, in seconds since the UNIX epoch, at which the token expires. It can be a maximum of 3600 seconds later than the iat. Note: this only controls the time when the custom token itself expires. But once you sign a user in using signInWithCustomToken(), they will remain signed in into the device until their session is invalidated or the user signs out.

也许您可以使用 signInWithCustomToken() 做一些事情,因为一旦登录,它只会在用户无效或注销时过期,但我认为最好的行动方案是寻找另一种方法。