必须刷新视图才能显示会话

时间:2019-06-06 02:47:48

标签: node.js express

我正在做一个简单的登录系统,并且正在使用 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('/');
        }
    });

})

问题已解决!

0 个答案:

没有答案