javascript - Firebase 在登录后注销用户
问题描述
我的问题是我的 firebase 托管网站有/account
一条动态加载内容页面的路由,具体取决于用户是否登录。为了检测用户状态,我使用了 firebase auth 的onAuthStateChange
回调:
firebase.auth().onAuthStateChanged((user) => {
console.log("authstate changed:"+user);
let pagereq = new XMLHttpRequest();
if (user) {
console.log(user.email);
user.getIdTokenResult(true).then((idtokenres) => {
if(idtokenres.claims.admin){
console.log("user is admin");
}
});
pagereq.open("GET","./account-management/management.html",true);
logout.addEventListener("click",handleLogout());
} else {
logout.parentNode.removeChild(logout);
pagereq.open("GET","./account-management/login/login-page.html",true);
}
}
当用户登录时,会出现一个动态加载的登录表单,并允许使用电子邮件和密码登录。用户现在输入他的凭据并点击“登录”。内容区域由于回调而重新加载并显示控制台页面。问题来了。当用户登录时,onAuthStateChanged
会调用两次:第一次成功使用精确的user
-Object,第二次使用user = null
. 控制台页面会在控制台页面本身加载后动态加载脚本。在脚本中,还有一个onAuthStateChanged
可以正常调用的函数。在这里,回调只被调用一次,user
也是空的。为什么会这样,我该如何解决这个问题?
我无法检测到为什么user
-Object 在第二次调用时为空,并且在动态加载的脚本中也为空。
解决方案
尝试删除()
你的handleLogout
所以它会像logout.addEventListener(‘click’, handleLogout)
推荐阅读
- vb.net - 如何不覆盖 VB.net 中的文件
- linux - 在多个文件中查找已排序日期的字符串
- tensorflow - 使用 fit_generator 批量训练模型
- amazon-web-services - LaunchConfiguration 和 cfn-hup 可以一起玩吗?
- ruby-on-rails - Ruby API 响应视图:如何呈现 JSON 响应?
- owl - Protege's Pizza 本体中的冗余公理
- jquery - 检查 DataTables 何时完成渲染
- javascript - JavaScript .each 函数保存最后一个值
- c# - Zebra ZPL 打印作业间歇性失败
- javascript - 如何在 ES6 中将多个函数导出为别名