试图制作自己的快餐盒,到目前为止,它很好用(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!";
我真的希望有人可以帮助我解决问题,或者至少将我引向正确的方向。
答案 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
});
}
});
};
不太确定这是否是可靠的解决方法,因为我还没有时间对其进行测试,但最终确定它是一个好的解决方法。