Node.js 如何阻止Firebase auth处理的后端继续运行到其他浏览器/会话
我正在创建一个基于身份验证的web应用程序。当只有一个会话在运行时,它可以正常工作,但如果另一个会话上的用户登录,它将执行到所有会话,允许每个人查看该用户的信息并使用其权限 我已经确定这是因为我从这篇文章处理我的所有身份验证后端: 但我想知道是否有任何修复,而不必处理任何客户端。上面的帖子没有给出任何修复或建议 这是登录路线:Node.js 如何阻止Firebase auth处理的后端继续运行到其他浏览器/会话,node.js,firebase,express,heroku,firebase-authentication,Node.js,Firebase,Express,Heroku,Firebase Authentication,我正在创建一个基于身份验证的web应用程序。当只有一个会话在运行时,它可以正常工作,但如果另一个会话上的用户登录,它将执行到所有会话,允许每个人查看该用户的信息并使用其权限 我已经确定这是因为我从这篇文章处理我的所有身份验证后端: 但我想知道是否有任何修复,而不必处理任何客户端。上面的帖子没有给出任何修复或建议 这是登录路线: app.post('/postSignIn', function(req, res) { console.log(req.body); let password
app.post('/postSignIn', function(req, res) {
console.log(req.body);
let password = req.body.password;
let email = req.body.email;
let user = firebase.auth().currentUser;
if (user) {
//TODO: Show user info is correct and redirect
success = "You're already logged in!";
res.render('login', {
success: success
})
} else {
firebase.auth().signInWithEmailAndPassword(email, password).catch(function(error) {
var errorCode = error.code;
var errorMessage = error.message;
console.log(errorMessage)
res.render('login', {
error: errorMessage
})
})
.then(
).catch(
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
success = "You're logged in!";
res.render('login', {
success: success
})
} else {
res.render('login', {
error: errorMessage
})
}
})
);
}
})
下面是如何检查身份验证状态的示例:
app.get('/makeThing', function(req, res) {
if (firebase.auth().currentUser) {
res.render('makeThing')
} else {
res.render('things', {
error: 'Login first.',
things: things,
})
}
});
我以为这会处理不同的会话,但事实并非如此,firebase.auth()。所有会话都会记住currentUser
,因此如果一个用户登录,所有其他会话都会登录到他们的帐户。如果有人能够描述前端或后端解决方案,包括使用Passport或Auth0之类的修复,那就太好了
该应用程序也被托管在Heroku上,因此任何通过Heroku进行的修复,例如每个用户运行不同的实例,都将受到欢迎。如果有人有相同的问题,请使用cookies!经过一段时间的研究,我确定这是最好的解决方案 这个溢出页面很好地解释了如何使用它们。 这是因为cookie是在客户端处理的。我建议在登录时设置cookie,并通过cookie检查当前身份验证状态,而不是Firebase当前用户功能。这对我有用