快速小吃店问题

时间:2018-07-21 23:26:43

标签: javascript express session routes snackbar

试图制作自己的快餐盒,到目前为止,它很好用(kinda一直都有),唯一的问题是,我注意到使用global或locals设置可以在客户端上访问的变量,如果您正在与某人完全相同的时间刷新您的网站。登录。因此,我决定尝试使用req.session作为即时消息使用它来存储用户登录信息。

我的想法是简单地这样做:

req.session.snackbarMessage = "You're logged in!";

这个想法很好,直到我需要删除SnackbarMessage为止。 我确实尝试过:

delete req.session.snackbarMessage;

只是没有真正的作用。所以我认为问题可能出在删除的地方?

这是我的个人资料路线的摘录,也是用户登录后我要删除的便条消息的地方:

module.exports = function (app) {

    /* GET profile page unless a session does not exist */
    app.get('/profile', function(req, res) {
        if (req.session.userInfo == undefined) {
            res.redirect('/login');
        } else {
            res.render('pages/profile', {
                user: req.session.userInfo,
                snackbarMessage: req.session.snackbarMessage
            });
            /* Clearing the message to avoid repeating */
            delete req.session.snackbarMessage;
        }
    });
};

一旦用户单击登录按钮,该用户就会被重定向到/ profile,这是上面看到的路由,也在我重定向用户之前,我声明了req.session.snackbarMessage,它是:

req.session.snackbarMessage = "You're logged in!";

我真的希望有人可以帮助我解决问题,或者至少将我引向正确的方向。

1 个答案:

答案 0 :(得分:0)

好吧,经过许多小时的猜测,我认为我不妨尝试同时呈现一个delete参数。

这是我解决此问题的方法:

module.exports = function (app) {

    /* GET profile page unless a session does not exist */
    app.get('/profile', function(req, res) {
        if (req.session.userInfo == undefined) {
            res.redirect('/login');
        } else {
            res.render('pages/profile', {
                user: req.session.userInfo,
                snackbarMessage: req.session.snackbarMessage,
                DeleteSnackbarMessage: delete req.session.snackbarMessage
            });
        }
    });
};

不太确定这是否是可靠的解决方法,因为我还没有时间对其进行测试,但最终确定它是一个好的解决方法。