Firebase 身份验证 currentUser 始终为空

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

我正在尝试使用加载功能保护Web应用程序中的路由,从

currentUser
读取
auth
的值以查看用户是否已登录,但它始终为空。所以当我刷新页面时,我被踢出了。

import { auth } from "$lib/firebase";
import { redirect } from "@sveltejs/kit";


export const load = async () => {

    const user = auth.currentUser;

    if (!user) {
        throw redirect(302, '/login');
    }

    return {};
};

我尝试过:

  1. 使用
    onAuthStateChanged
    代替并实现监听器。
  2. 阻止 Firebase 在刷新时重新初始化。
  3. await
    实现一个函数来查看vale更新是否有延迟。
  4. 强制执行 Firebase 持久模式。
  5. 这是一个+page.ts。我也尝试更改 ssd 和 csr 的值,以了解渲染如何影响这一点。

结果总是一样的。

null
currentUser

javascript firebase-authentication svelte sveltekit
1个回答
0
投票

这是页面加载时的预期行为。当应用/页面加载时,Firebase 会自动从本地存储恢复用户凭据。但要做到这一点,它必须调用服务器(即检查帐户是否被暂停),这是一个异步调用,在页面加载之前不会完成。因此,用户帐户将在页面加载后恢复(通常很快)。

您将需要使用身份验证状态侦听器来捕获用户登录,如

获取当前用户文档中的第一个代码片段所示。

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