在页面加载Javascript Firebase之前获取登录用户



对于应用程序的每个页面,在呈现页面之前,我需要检查是否有登录用户(通过Firebase(。

在每个场景中(无论是否为登录用户(,我都需要呈现不同的页面。

在JavaScript中最好的方法是什么?

附言:考虑先呈现一个空白页面,然后从该页面请求真实页面,并在该请求中插入用户令牌。这样,服务器将在呈现真实页面时拥有用户令牌。这种方法的问题是,我将完全失去搜索排名功能,因为谷歌不知道我的空白页面(最初呈现(是关于什么的。我甚至会失去告诉其他服务(如WhatsApp(该页面内容的元标签。

解决方案:

刚发现我可以用cookie达到我想要的目的,因为它们会随每个请求一起发送到服务器。因此,我调用onAuthStateChanged方法,将令牌保存在cookie中,然后在接下来的请求中不需要再这样做,因为令牌已经在接下来的每个请求中发送到我的服务器。

如果您使用像react这样的框架,您可以使用react Router创建自定义的受保护路由。这是我发现的一个线程,如果你使用的是react路由器,否则你的逻辑可能会有所不同。

否则,如果您使用的是web SDK,则可以使用firebase-auth的onAuthStateChanged方法来检测用户的当前会话。当页面最初加载并且用户登录时,此方法将在第一次加载页面时运行并提供会话信息,以及在执行过程中身份验证状态是否发生更改。

从那里,您可以在代码中使用此逻辑来确定登录者,并显示内容或重定向。

最新更新