【发布时间】:2019-10-15 08:16:06
【问题描述】:
问题:
我需要在使用 Next.js 和 Firebase(我知道这不是最佳组合)编写的应用程序的服务器端发出数据库请求,以便为客户端准备初始数据。
问题是我想使用在服务器客户端上运行的相同代码(使用服务器上的 firebase 客户端 SDK 处理数据库请求)。
但我不知道如何与服务器端共享用户会话。
服务器没有用户在客户端 SDK 中登录,因此即使客户端可以访问受限资源(它知道当前用户),也会返回 403 限制资源
我尝试了以下方法:
自定义令牌破解(不能使用 ID 令牌唱歌)
目前我必须将用户 ID 令牌添加到 cookie。 这样,令牌会附加到每个后续请求,服务器端可以生成一个自定义令牌(我无法使用 ID 令牌登录),然后我可以通过它登录应用程序的服务器端以及客户端(其中如果启用持久性,则已登录)。
这是一个巨大的矫枉过正,我应该能够以与客户端相同的方式登录服务器,因为它实际上就像客户端本身一样(它不执行任何特权操作)。
第二次登陆服务器
其他解决方案是通过 cookie 发送凭据(安全风险),然后第二次登录服务器。这不适用于一次性身份验证会话(例如一次性电子邮件链接,因为服务器在第二次有效登录)。
官方的例子没有帮助
在 Next.js 存储库中有一个 firbease auth 的示例,它现在已经注释掉了服务器端数据获取。即使它没有被注释掉,它也不会检查用户权限,如果找到用户,它会直接获取数据https://github.com/zeit/next.js/tree/canary/examples/with-firebase-authentication
【问题讨论】:
标签: reactjs firebase firebase-authentication next.js