Jam*_*mes 7 firebase svelte sveltekit
我正在一个可读存储中管理身份验证状态,该存储与一个承诺分组,该承诺在身份验证状态已知(登录或注销)时解析。该商店是通过内部设置的onAuthStateChange。
我正在尝试从服务器(+layout.server.ts和+page.server.ts)访问此身份验证状态,以便在未通过身份验证的情况下将用户重定向到登录页面,或者在(且仅当)经过身份验证时从数据库加载数据。无论我尝试什么,每当我从服务器访问此存储时,它的值始终为空。我认为这是因为 Firebase 只应该在客户端上运行,尽管我不确定。有什么方法可以从服务器访问此存储,或者更改我的实现,以便 Firebase 在服务器中运行并将身份验证状态传递给客户端?这篇博文几乎准确地解释了我想要做的事情,但这里的解决方案似乎比需要的更复杂。
我尝试将 Firebase 初始化代码移动到服务器(在 和 中hooks.server.ts)+layout.server.ts,但是我无法将 auth 对象传递给客户端,因为它无法序列化(当我尝试返回时,我收到一个错误解释这一点它来自 ) 中的加载函数+page.server.ts。我还尝试仅使用客户端代码处理身份验证,但服务器负责从数据库加载数据,因此在这种情况下,我无法从服务器验证有效的身份验证状态。
您在此处链接的博客文章的作者。
您是正确的,firebase 客户端只能在客户端上运行。如果您想访问 Firebase 服务服务器端,您应该使用Firebase admin。
在我的文章中,我正在解决 firebase 设置的这些限制,不幸的是您确实需要那么多代码。
您被迫在前端(firebase-client)中进行所有身份验证,只有之后您才能将用户信息通知后端。(通过cookie)
在我写这篇文章之前,我脑海中的理想解决方案是这样的:
我确实认为如果您使用自定义令牌,类似这样的流程是可能的。但我确信这将是一大堆更复杂的代码。
| 归档时间: |
|
| 查看次数: |
1527 次 |
| 最近记录: |