gpt4 book ai didi

javascript - req.flash() 在 req.session.destroy() 之后不工作

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

根据条件,我需要销毁用户的当前 session ,并将他重定向到带有消息的登录页面。我使用 flash 来获得只显示一次的消息。除了这里,这在我的应用程序上无处不在,因为这里我在 req.session.destroy() 之后使用了 req.flash

我怎样才能做到这一点?我曾尝试将 req.flash() 放在 req.session.destroy() 之前,但这不起作用,我认为是因为 req.session.destroy() 清除我们刚刚存储 flash 消息的 session 。谢谢。

   if( req.session.adminUser.blocked ){
req.logout();
req.session.destroy(()=>{
req.flash("flashMessage", "You are blocked, Please contact admin");
req.session.save(function(){
res.redirect("/admin-panel/login");
return false;
});//session.save()
});
}

使用这段代码,我得到了这个错误 - Error: req.flash() requires sessions。如果我在 session.destroy 语句之前移动 flash 语句,那么我不会收到任何错误,但不会显示消息。

最佳答案

req.flash() 依赖于一个有效的 session ,因此如果您销毁该 session ,则闪存消息也会被销毁。

在我看来,创建一个单独的“被阻止”页面并呈现它实际上可能更好,而不是将被阻止的用户重定向回登录页面(无论如何他们都无法登录):

req.session.save(function(){
res.render("/admin-panel/blocked");
});

作为(不太漂亮的)替代方案,您可以将查询字符串传递到登录页面,指示用户已被阻止:

res.redirect("/admin-panel/login?blocked=true");

并检查登录模板,看看它是否应显示“您已被阻止”消息。

关于javascript - req.flash() 在 req.session.destroy() 之后不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45141189/

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