Я делал простую систему входа в систему и использую sequelize , сохраняя сеанс в express-session-sequelize . Весь процесс работает хорошо, но когда я вхожу в систему, мне приходится обновлять страницу, чтобы вид изменится с формы входа на Welcome back ..., bro! . У меня есть всплывающее окно входа в систему / путь.
exports.postLogin = (req, res, next) => {
const username = req.body.username;
const password = req.body.password;
User.findOne({
where: {
username: username,
password: password
}
})
.then(user => {
req.session.logged = true;
req.session.user = user;
res.redirect('/');
})
.catch(err => {
console.log(err);
});}
exports.getIndex = (req, res, next) => {
Book.findAll()
.then(books => {
res.render(('index.ejs'), {
title: "Main Page",
books: books,
logged: req.session.logged,
user: req.session.user
})
}).catch(err => {
console.log(err);
});}
и часть, в которой я отображаю свой вид
<% if (logged) { %>
<p>Welcome back <%= user.username %>, bro!</p>
<a href='/logout'>Logout!</a>
<% } else { %>
<p class='container-box-title'>Login Window</p>
<form class='login-form' action="/login" method="POST">
<input class="input" name="username" placeholder="Username" type="text">
<input class="input" name="password" placeholder="Password" type="password">
<input class="button" type="submit">
</form>
<% } %>
Итак, если я напишу правильную информацию, я нажму кнопку «Войти», она перенаправит меня на «/», что я и хочу, но форма входа все еще там. Я обновляю страницу, затем она меняется на С возвращением ... братан! , еще раз спасибо!
РЕДАКТИРОВАТЬ: похоже, что я перенаправил страницу перед сохранением куки, выполнив:
.then(user => {
req.session.logged = true;
req.session.user = user;
req.session.save((err) => {
if (err) {
console.log(err);
} else {
res.redirect('/');
}
});
})
проблема была решена!