如何在passport-local的logout方法中显示flash消息?
解决passport-local中req.logout()后Flash消息不显示的问题
问题出在req.logout()是异步操作,你当前的代码在logout还未执行完成时,就已经设置了flash消息并重定向。而logout完成后会清除用户session,导致刚设置的flash消息被一并清除,所以登录页面看不到消息。
正确的做法是将flash消息设置和重定向操作放到req.logout的回调函数内部,确保logout执行完成后再处理后续逻辑:
logout: (req, res, next) => { req.logout((err) => { if (err) { return next(err) } // 在logout完成后再设置flash消息并重定向 req.flash('success_msg', 'You have successfully logged out') res.redirect('/login') }) }
这样修改后,logout操作完成后才会写入flash消息,此时session还保留着(直到重定向响应完成后才会结束),登录页面就能正常读取并显示这个消息了。
内容的提问来源于stack exchange,提问作者Hannah
相关产品推荐
相关产品推荐

