Firebase + Nextjs-用户会话共享

问题描述 投票:5回答:1

问题:

我需要在我的应用程序的服务器端发出数据库请求,这是使用Next.js和Firebase编写的(我知道这不是最好的组合),以便为客户端准备初始数据。

问题是,我想使用在服务器上客户端运行的相同代码(使用服务器上的Firebase客户端SDK进行数据库请求)。

但是我不知道如何与服务器端共享用户会话。

服务器没有在客户端SDK中登录用户,因此即使客户端可以访问受限资源(它知道当前用户),也返回403获取受限资源

我尝试了以下操作:

自定义令牌骇客(不能使用ID令牌唱歌)

当前,我必须将用户ID令牌添加到Cookie。这样,令牌将附加到每个后续请求中,并且服务器端可以生成自定义令牌(我无法使用ID令牌登录),然后我可以通过该令牌在应用程序的服务器端以及客户端(如果启用了持久性,则已经登录)。

这是一个巨大的矫over过正,我应该能够以与客户端相同的方式在服务器上登录,因为它实际上就像是客户端本身(它不执行任何特权操作)。

第二次登录服务器

[其他解决方案是通过Cookie发送凭据(存在安全风险),然后第二次登录服务器。这不适用于一次性身份验证会话(例如一次性电子邮件链接,因为服务器第二次有效登录)。

官方示例没有帮助

在Next.js存储库中,有一个关于firbease auth的示例,该示例现在已注释掉了服务器端数据的提取。即使未注释掉它也没有检查用户权限,但是只要找到用户,它就会直接获取数据https://github.com/zeit/next.js/tree/canary/examples/with-firebase-authentication

reactjs firebase firebase-authentication next.js
1个回答
0
投票

我有相同的设置(Next.js和Firebase),通过react context API设置全局会话并不容易。我遵循了本指南,并获得了成功https://reacttricks.com/sharing-global-data-in-next-with-custom-app-and-usecontext-hook/

© www.soinside.com 2019 - 2024. All rights reserved.