Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 注销后清除Firebase持久性索引数据库_Javascript_Reactjs_Firebase_Firebase Authentication - Fatal编程技术网

Javascript 注销后清除Firebase持久性索引数据库

Javascript 注销后清除Firebase持久性索引数据库,javascript,reactjs,firebase,firebase-authentication,Javascript,Reactjs,Firebase,Firebase Authentication,我正在使用firebase实现身份验证以作出反应 我在注销时遇到问题,然后使用另一个用户凭据再次登录。Firebase保留第一个用户的访问令牌和用户信息 我试图手动清除IndexedDB,但没有成功 登录实现: Firebase.auth().setPersistence(Firebase.auth.auth.Persistence.LOCAL) 。然后(()=>Firebase.auth()。使用电子邮件和密码(电子邮件,密码)登录。然后((响应)=>{ //恳求 返回响应; }).catch

我正在使用firebase实现身份验证以作出反应

我在注销时遇到问题,然后使用另一个用户凭据再次登录。Firebase保留第一个用户的访问令牌和用户信息

我试图手动清除IndexedDB,但没有成功

登录实现:

Firebase.auth().setPersistence(Firebase.auth.auth.Persistence.LOCAL)
。然后(()=>Firebase.auth()。使用电子邮件和密码(电子邮件,密码)登录。然后((响应)=>{
//恳求
返回响应;
}).catch((错误)=>{
投掷误差;
}));
注销实施:

导出异步函数logoutFirebase(){
deleteDatabase('firebaseLocalStorageDb');
返回Firebase.auth().signOut();
}

当您将身份验证持久性设置为本地时,您需要清除第三方cookie才能注销

试试这个:

export function logoutFirebase() {
    return Firebase.auth().signOut()
        .then(() => {
            deleteAllCookies();
        })
        .catch(error => console.error("sign out failed", error));
}

function deleteAllCookies() {
    var cookies = document.cookie.split(";");

    for (var i = 0; i < cookies.length; i++) {
        var cookie = cookies[i];
        var eqPos = cookie.indexOf("=");
        var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
        document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
    }
}
导出函数logoutFirebase(){
返回Firebase.auth().signOut()
.然后(()=>{
删除所有cookies();
})
.catch(错误=>console.error(“注销失败”,错误));
}
函数deleteAllCookies(){
var cookies=document.cookie.split(“;”);
对于(变量i=0;i-1?cookie.substr(0,eqPos):cookie;
document.cookie=name+“=;expires=Thu,1970年1月1日00:00:00 GMT”;
}
}

事实证明,在将用户持久化从firebase.auth.auth.Persistence.SESSION切换到firebase.auth.auth.Persistence.LOCAL之后,我不得不完全删除这一行:


indexedDB.deleteDatabase('firebaseLocalStorageDb')当您运行此代码时,哪一行没有执行您期望它执行的操作?这一行//indexedDB.deleteDatabase('firebaseLocalStorageDb')@FrankvanPuffelenCalling
注销
应足以从
索引数据库中清除存储的凭证
。您不需要显式删除数据库。@bojeil是的。明确删除它是问题的原因您对cookie部分的看法是正确的,因为我在其中存储了一些用户信息,但我通过删除indexedDB.deleteDatabase(“firebaseLocalStorageDb”);完全地@Melchia