我一直在处理身份验证、阅读和观看相关视频。我开始构建自己的 JWT 解决方案,基于五分钟后过期的access_token 和永不过期的refresh_token。我将该令牌存储在 cookie 中,并在需要时使用第二个令牌来提供更多 access_token。我将刷新令牌存储在 Redis 中,以便在其中之一泄露/被盗时能够撤销。
现在,我需要将我的身份验证系统移至 Google Firebase,以便在那里存储我的用户,并添加 Google 和 Facebook 登录信息。但我发现我需要创建一个在两周内过期的 sessionCookie。之后,用户从应用程序注销,需要再次手动访问。我想以正确的方式刷新 firebase sessionCookie(自动,服务器端),但文档对此只字未提。我再次提出自己的解决方案,但我认为这是不对的。
我不想使用 getIdToken 方法,因为使用自定义令牌,我需要在客户端修改每个 api 调用,而这不是我的想法。我想在服务器端进行刷新。
那么,自动刷新sessionCookie并保持用户永久认证的正确方法是什么?
我在这里读到的信息:
Firebase ID 令牌将在一小时内过期,此默认行为无法修改或更改,但管理员 sdk 创建的自定义令牌除外,您的过期范围几乎不受限制。
从后端或云功能生成此令牌后,您可以使用此自定义令牌对您的客户端进行身份验证,并在下一个会话中使用它。
唯一的问题是您的应用程序本地缓存设置可以被擦除,清除您的刷新令牌并阻止您的用户重新进行身份验证。
从具有自定义身份验证的 Admin SDK 文档中,这 3 个主题很有趣。