所以每當我從火力地堡註銷,我被加上Firebase註銷顯示權限被拒絕錯誤。
Error: permission_denied: Client doesn't have permission to access the desired data.
我的理解是,因爲登錄會話終止時,我的一些對象不能再訪問火力點的數據。但是如何在註銷之前斷開這些對象呢?
對於我離子查看一個註銷按鈕,它只是調用一個火力點服務:
function logout() {
auth.$unauth();
getCurrentUser();
};
function getCurrentUser() {
var authData = auth.$getAuth();
if (authData) {
$rootScope.userId = authData.uid;
$rootScope.currentUser = $firebaseObject(authRef.child("users").child(authData.uid));
return $rootScope.currentUser;
} else {
console.log("User is not login!");
$rootScope.userId = null;
$location.path("/auth/signin");
if ($rootScope.currentUser) {
$rootScope.currentUser.$destroy();
}
}
};
所以我摧毀$ rootScope.currentUser那裏。我使用相同的getCurrentUser配置文件頁面。所以錯誤沒有以這種方式顯示。但是在其他視圖中,我有另一個$ firebaseArray,還有另一個Ref.on(「child_added」,函數(snap)與同一個$ firebaseObject。當我查看配置文件頁面時,此頁面至少有3個firebase連接,我得到了3個permission_denied我註銷時出現錯誤(註銷按鈕在用戶配置文件頁面上)
我的問題是,如何在註銷之前斷開此Firebase連接?是否有方法斷開所有Firebase連接 - 無論AngularFire或常規的Firebase?所以我可以註銷而不用擔心哪些Firebase連接沒有關閉?另外,由於註銷按鈕位於配置文件範圍內而其他連接位於不同範圍內,因此我不知道如何關閉連接甚至在配置文件範圍內都沒有...
你在幹什麼用 「$ onAuth」 什麼?也許在你的驗證工廠? – jbdev
是的,我願意。但使用onAuth在註銷時仍然不知道我應該關閉什麼。因爲我的例子無處不在。他們中的大多數在離開視圖時我無法關閉,因爲他們都需要聽取Firebase的更新。 –