【问题标题】:Firebase authentication signs out previously authenticated users causing permission denied errors for themFirebase 身份验证注销以前经过身份验证的用户,导致他们出现权限被拒绝错误
【发布时间】:2017-02-13 07:08:57
【问题描述】:

1) 用户 X 访问了我的网页,并且 X 已正确验证并能够通过网络浏览器写入我的 firebase 数据库。

2) 用户 Y 然后访问我的网页,并且 Y 已通过身份验证并能够通过网络浏览器写入我的 firebase 数据库。 但是,在用户 Y 通过身份验证后,用户 X 开始在浏览器中收到“Permission Denied”控制台日志消息,并且无法再写入 firebase。

为什么当 Y 被认证时 X 会失去认证权限?

这是 Node.js 服务器代码:

token = Fb.auth().createCustomToken(uid, params);
...
response.render('pages/xyz', {settings:settings, token:token, ...});

这里是Node.js传递给浏览器的html/js:

firebase.initializeApp(<%- JSON.stringify(settings);%>);
db = firebase.database();
function initApp() {
    firebase.auth().onAuthStateChanged(function(user) {
        if (user) {
            //do nothing
        }
    });
}

$('document').ready(function(){
    initApp();
    firebase.auth().signInWithCustomToken('<%=token%>').catch(function(error) {
        // Handle Errors here.
    });
});

【问题讨论】:

  • 您是否尝试在浏览器的同一选项卡中验证多个用户?那是行不通的。 Firebase 身份验证每个应用最多有一个登录用户。
  • 啊,是的。我通过在同一个浏览器中打开两个不同的浏览器选项卡(针对两个不同的用户)来测试它。
  • 那行不通。如果您想在本地进行测试,请尝试不同的浏览器,或常规选项卡 + 隐身窗口。
  • 谢谢。如果你把它写成下面的答案,我会把它标记为正确的。

标签: javascript node.js firebase firebase-realtime-database firebase-authentication


【解决方案1】:

一次只能在一个应用中对一个人进行身份验证。

如果您在同一个浏览器窗口中打开多个选项卡,它们很可能最终会成为一个用户。

要在一台机器上拥有多个用户,请使用不同的辅助浏览器或打开隐身窗口。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-15
    • 2018-04-25
    • 1970-01-01
    • 2020-09-08
    • 2019-01-21
    • 1970-01-01
    • 1970-01-01
    • 2016-11-14
    相关资源
    最近更新 更多