情况:
如果我从一台设备登录并在任何其他设备(我的手机、我 friend 的笔记本电脑、我邻居的电脑)上打开该网站,该网站会显示我已在所有这些设备上登录。
如果我注销,我在所有设备上都会显示为已注销。
实际上,我的网站一次只能由一名用户使用,这绝对毫无意义。
我一定是误用了 Firebase 身份验证。
<小时/>代码:
router.post('/login', function(req, res, next) {
var email = req.body.email;
var password = req.body.password;
// Validation
req.checkBody('email', 'Email is required').notEmpty();
req.checkBody('email', 'Email is not valid').isEmail();
req.checkBody('password', 'Password is required').notEmpty();
var errors = req.validationErrors();
if(errors){
res.render('users/login', {
errors: errors
});
} else {
firebase.auth().signInWithEmailAndPassword(email, password).then(authData => {
console.log("Authenticated user with uid:",authData);
req.flash('success_msg', 'You have logged in');
res.redirect("/fun/index");
}).catch(error => {
var errorCode = error.code;
var errorMessage = error.message;
console.log("Login Failed: ", error);
req.flash('error_msg', "Unknown user or password");
res.redirect('/users/login');
});
}
});
<小时/>
问题:
我犯了什么错误以及如何纠正?
<小时/>编辑:发现这个:Firebase NodeJS Authentication
但问题仍然没有答案。
最佳答案
如果您使用 node.js admin SDK ,您实际上处于单用户情况,并且您的服务器是单用户。通常,该单个用户是特权服务帐户,但您似乎正在使用它来同时登录各个用户。这不是管理 SDK 支持的用例。
如果您希望按用户登录您的网站,则必须使用 web SDK 在浏览器本身中进行身份验证。 。 Web SDK 代表登录用户安全地直接与 Firebase 服务进行通信。
关于javascript - 我的 Firebase 网站始终只允许一名用户登录,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41579003/