Я реализую элемент управления входом, используя Node.js (экспресс) + firestore.Я пытался использовать поисковый запрос для проверки id
и пароля (pw
).
Если введенные пользователем данные (из HTML <form>
) находятся в БД пожарного хранилища, страница клиента будет перенаправлена на /main
.else
перенаправит обратно.
Работает, когда данные находятся в БД пожарного хранилища, но не работает с бесконечным циклом и нет redirect
, когда данные не находятся в БД пожарного хранилища.
Я проверил данные (id
, pw
) и проверено.Но это всегда делает бесконечный цикл, когда данные не находятся в базе данных Firestore.
Просмотр кода выглядит следующим образом.
<form action="" method="post">
<input placeholder="ID" name="id" id="id" type="text">
<input placeholder="PASSWORD" name="pw" id="password" type="password">
<button type="submit">SIGN-IN</button>
</form>
<button onclick="location.href='/signup'">SIGN-UP</button>
И код на сервере выглядит так
var users_info = db.collection('users')
.where('id', '==', req.body.id).where('pw', '==', sha256(req.body.pw))
.get().then(snapshot => {
snapshot.forEach(doc => {
if (doc.exists) {
req.session.user = {
'id': doc.data().id,
'name': doc.data().name,
'auth': doc.data().auth,
'is_guest': doc.data().is_guest
}
res.redirect('/main');
} else {
res.redirect('back');
}
});
})
.catch(err => {
console.log(err);
res.redirect('back');
});