我正在做一个简单的登录系统,并且正在使用 sequelize ,将会话存储在 express-session-sequelize 中。整个过程运行良好,但是登录时,我必须刷新页面才能将视图从登录表单更改为欢迎回来...,兄弟!。我在/路径上有我的登录弹出窗口。
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>
<% } %>
因此,如果我输入正确的信息,请按“登录”按钮,它会将我重定向到我想要的“ /”,但登录表单仍然存在。我刷新页面,然后将其更改为欢迎回来...,兄弟!,谢谢您!
编辑:通过执行以下操作,我似乎在保存cookie之前正在重定向页面
.then(user => {
req.session.logged = true;
req.session.user = user;
req.session.save((err) => {
if (err) {
console.log(err);
} else {
res.redirect('/');
}
});
})
问题已解决!