使用Firebase身份验证的Firebase托管Web节点Js App,跨设备保留身份验证会话吗?

时间:2019-11-24 06:27:09

标签: node.js firebase express firebase-authentication firebase-hosting

我在Firebase Hosting上部署了Node Js(Express Js)Web应用程序。该应用仅使用Firebase Auth来控制用户对应用的访问。问题是,当我登录时,会话保留在服务器中。这意味着,如果我在另一台设备上打开了我的应用程序,则已登录。我希望我的应用程序不保持跨设备的会话。

使其更加清晰。我登录到在笔记本电脑中打开的Web应用程序。一切正常。然后,我在手机的浏览器中打开该应用程序,该应用程序已登录,因为我已登录笔记本电脑。

请帮助我,我无法在线找到答案。我遇到的唯一一件事是会话cookie,但我不知道这是否是解决方案。

非常感谢您。

编辑: 这是我用来登录用户的代码。我正在使用Express Js,并且正在使用index.js路由在后端登录用户。下面的代码是在用post提交表单后执行的。

firebase.auth().signInWithEmailAndPassword(req.body.email, req.body.password).then(function(data){
            db.collection("usuarios").doc(auth.currentUser.uid).get().then(function(doc) {
                if(doc.data().roles.includes(1) || doc.data().roles.includes(0)){
                    auth.signOut().then(function(data){
                        view = 'index';
                        context = {
                            error: true,
                            title: "Home",
                        };
                        res.render(view, context);
                    }).catch(function(error) {
                        view = 'index';
                        context = {
                            error: false,
                            title: "Home",
                        };
                        res.render(view, context);
                    });
                } else { //The user has been logged in and has the correct permissions
                    view = 'admin';
                    context = {
                        error: false,
                        username: firebase.auth().currentUser.email,
                        title: 'Admin',
                        roles: doc.data().roles,
                    };
                    res.render(view, context);
                }
            })
                .catch(function(error) {
                    view = 'index';
                    context = {
                        error: false,
                        title: "Home",
                    };
                    res.render(view, context);
                });
        }).catch(function(error) {
            var errorCode = error.code;
            var errorMessage = error.message;
            view = 'index';
            context = {
                error: true,
                title: "Home",
            };
            res.render(view, context);
        });

1 个答案:

答案 0 :(得分:0)

查看此文档以了解Firebase身份验证:

  

您可以根据应用程序或用户的要求,在指定的Firebase Auth实例上选择三种类型的Auth状态持久性。

https://firebase.google.com/docs/auth/web/auth-state-persistence#supported_types_of_auth_state_persistence