gpt4 book ai didi

mysql - 使用 MySQL 作为 session 存储时的重定向问题

转载 作者:行者123 更新时间:2023-11-29 15:54:12 25 4
gpt4 key购买 nike

我已经设置了一个 Node.js 应用程序,在其中使用 session 并将它们存储在 MySQL 中。使用 MemoryStorage 时,重定向工作正常,但使用 MySQL 时,req.session 不会更新,直到您重新加载或移动到其他页面,我被迫将同一页面的每个 res.redirect('/...') 替换为 res.render() 以显示 req.session< 中的任何内容 立即。

我尝试过使用return res.redirect()和不使用setTimeout,但都不起作用。我无法弄清楚,我需要将 session 存储在数据库中

router.get('/student-sign-up', function (req, res, next) {
res.render('student/signUp', {
title: 'Sign up',
errors: req.session.errors
});
req.session.errors = null; //to flush them on reload
}).post('/student-sign-up', function (req, res, next) {
//Some form checks
let errors = req.validationErrors();
if (errors) {
req.session.errors = errors;
req.session.signUpSuccess = false;
return res.redirect('/student-sign-up');
}
//...
}

上面应该重定向到同一页面,并显示错误(我使用 Handlebars 作为我的 View 引擎)(如果有),但它只是重定向,如果您手动刷新或再次提交错误,则会显示它。登录也是如此(成功时不进入平台主页,失败时也不显示错误)。好像一切都落后了一步……

最佳答案

好的,我找到了解决方案。根据 express-session 文档,我所要做的就是强制保存然后重定向,如下所示:

req.session.save((err) => {
if (err) {
req.locals.error = err;
return res.redirect('/');
}
return res.redirect('/next-section');
});

我将把这个留给可能有同样问题的人!

关于mysql - 使用 MySQL 作为 session 存储时的重定向问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56587705/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com