【问题标题】:Prevent writing errors in browser console after logout in Angular Firebase在 Angular Firebase 中注销后防止在浏览器控制台中写入错误
【发布时间】:2017-12-18 22:11:14
【问题描述】:

问题:目前当我在应用程序中注销时,浏览器控制台中记录了以下错误,

core.es5.js:1020 ERROR Error: permission_denied at /all-posts: Client doesn't have permission to access the desired data. at Object.webpackJsonp.../../../../@firebase/database/dist/cjs/src/core/util/util.js.exports.errorForServerCode (util.js:513) at onComplete (SyncTree.js:538) at Object.onComplete (Repo.js:115) at PersistentConnection.webpackJsonp.../../../../@firebase/database/dist/cjs/src/core/PersistentConnection.js.PersistentConnection.onListenRevoked_ (PersistentConnection.js:692) at PersistentConnection.webpackJsonp.../../../../@firebase/database/dist/cjs/src/core/PersistentConnection.js.PersistentConnection.onDataPush_ (PersistentConnection.js:464) at PersistentConnection.webpackJsonp.../../../../@firebase/database/dist/cjs/src/core/PersistentConnection.js.PersistentConnection.onDataMessage_ (PersistentConnection.js:452) at Connection.webpackJsonp.../../../../@firebase/database/dist/cjs/src/realtime/Connection.js.Connection.onDataMessage_ (Connection.js:262) at Connection.webpackJsonp.../../../../@firebase/database/dist/cjs/src/realtime/Connection.js.Connection.onPrimaryMessageReceived_ (Connection.js:256) at WebSocketConnection.onMessage (Connection.js:157) at WebSocketConnection.webpackJsonp.../../../../@firebase/database/dist/cjs/src/realtime/WebSocketConnection.js.WebSocketConnection.appendFrame_ (WebSocketConnection.js:197) 控制台中还记录了其他与权限相关的类似错误,这仅用于示例。 Here is snapshot. 我想弄清楚是否有办法防止以编程方式在浏览器控制台中记录这些类型的错误。

这是我当前的注销代码:

logout() {
     this.afAuth.auth.signOut()
     .then( () => {
         this.router.navigate(['login']);
     });
 }

【问题讨论】:

    标签: angular firebase-authentication


    【解决方案1】:

    您的 Firebase 数据库中似乎有需要对用户进行身份验证的侦听器。当您将用户注销时,这些侦听器将变为非法,因此 Firebase 数据库会取消它们并将错误告知您的应用。

    为防止这种情况发生,请在将用户注销之前停止侦听器,方法是为每个侦听器调用 ref.off()

    【讨论】:

    • 是的,我在 Firebase 上有监听器来更新数据,以防数据发生变化。感谢您的建议ref.off()
    • 我很想给你的答案投票,但我目前的声誉低于 15,所以它允许我投票给任何答案.. :( 但我已经检查了复选标记..
    • 不用担心。那只是我的sn-p解释系统。 ;-) 在 Stack Overflow 上获得更高声誉的最佳方法是回答其他人的一些问题。我强烈建议这样做既是为了代表,也是因为它很有趣!
    • 谢谢.. 非常感谢您的建议.. :)
    猜你喜欢
    • 1970-01-01
    • 2021-11-09
    • 1970-01-01
    • 2021-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-19
    相关资源
    最近更新 更多