gpt4 book ai didi

javascript - Firebase 身份验证 onAuthStateChanged 在函数体之后响应

转载 作者:行者123 更新时间:2023-12-02 21:55:57 34 4
gpt4 key购买 nike

我正在使用 firebase 创建一个应用程序。加载任何页面时,我都会通过以下代码检查身份验证。当我从登陆页面调用 isAuthenticated 时,即使用户已经登录并且持久性是 LOCAL( https://firebase.google.com/docs/auth/web/auth-state-persistence ),它也会返回 false,返回 false 后将执行内部函数。

authentication.ts

import {auth} from "../firebase";

export function isAuthenticated() {
console.log("Started!");
auth.onAuthStateChanged(function(user) : boolean {
console.log("Coming inside authentication");
if (user) {
console.log('User signed in - auth success! ', user.email);
return true;
} else {
console.log('User not signed in - auth failed! ');
return false;
}
});
console.log("Something wrong, coming here!");
return false;
};

enter image description here

甚至在内部 onAuthStateChanged 函数运行之前我就得到了错误。请查看屏幕截图。

如何确保我始终获得内部函数的返回值。

最佳答案

auth.onAuthStateChanged 不会返回任何有用的内容。它异步添加一个监听器,每当用户登录或退出时都会调用该监听器。它对于立即了解用户状态不是很有用,而且您不能简单地从回调中返回一个值以在封闭函数中使用。

如果您想立即知道用户当前是否登录或退出,您应该使用 auth.currentUser获取 User 对象。如果用户注销,则该值将为空。然而,这种状态可能会随着时间的推移而改变。如果您对随时间的变化感兴趣,请改用监听器。

关于javascript - Firebase 身份验证 onAuthStateChanged 在函数体之后响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60013776/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com