You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 03:01:01