我正在尝试使用加载功能保护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 {};
};
我尝试过:
onAuthStateChanged
代替并实现监听器。await
实现一个函数来查看vale更新是否有延迟。结果总是一样的。
null
为 currentUser
。
这是页面加载时的预期行为。当应用/页面加载时,Firebase 会自动从本地存储恢复用户凭据。但要做到这一点,它必须调用服务器(即检查帐户是否被暂停),这是一个异步调用,在页面加载之前不会完成。因此,用户帐户将在页面加载后恢复(通常很快)。
您将需要使用身份验证状态侦听器来捕获用户登录,如获取当前用户文档中的第一个代码片段所示。