【问题标题】:Clear Firebase persistence Indexed DB after logout注销后清除 Firebase 持久性索引数据库
【发布时间】:2020-04-29 23:12:11
【问题描述】:

我正在实施身份验证以使用 firebase 做出反应。

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

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

登录实现:

Firebase.auth().setPersistence(firebase.auth.Auth.Persistence.LOCAL)
  .then(() => Firebase.auth().signInWithEmailAndPassword(email, password).then((response) => {
    //impl
    return response;
  }).catch((error) => {
    throw error;
  }));

注销实现:

export async function logoutFirebase() {
  indexedDB.deleteDatabase('firebaseLocalStorageDb');
  return Firebase.auth().signOut();
}

【问题讨论】:

  • 当您运行此代码时,哪一行没有按照您的预期执行?
  • 这一行 //indexedDB.deleteDatabase('firebaseLocalStorageDb'); @FrankvanPuffelen
  • 调用signOut 应该足以从indexedDB 清除存储的凭据。您不需要显式删除数据库。
  • @bojeil 是的。明确删除它是问题的原因

标签: javascript reactjs firebase firebase-authentication


【解决方案1】:

当您将身份验证持久性设置为本地时,您需要清除第 3 方 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";
    }
}

【讨论】:

  • 你对 cookie 部分是正确的,因为我在其中存储了一些用户信息,但我已经通过删除 indexedDB.deleteDatabase("firebaseLocalStorageDb");完全@Melchia
【解决方案2】:

事实证明,从持久用户从 firebase.auth.Auth.Persistence.SESSION 切换到 firebase.auth.Auth.Persistence.LOCAL 后,我有完全删除此行:

indexedDB.deleteDatabase('firebaseLocalStorageDb');

因为它通过清除 IndexedDB 来干扰 firebase。

当您使用第二个用户登录时,根本不会保留身份验证。 您必须强制刷新登录页面以使 firebase 再次初始化 IndexedDB,或者完全摆脱该行,这当然是最佳选择。

【讨论】:

  • 同一用户在多个选项卡中打开时可能会导致问题。
猜你喜欢
  • 2016-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-02
  • 2014-08-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多