我在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);
});
答案 0 :(得分:0)
查看此文档以了解Firebase身份验证:
您可以根据应用程序或用户的要求,在指定的Firebase Auth实例上选择三种类型的Auth状态持久性。