【问题标题】:Avoid req.flash delete data on middleware避免 req.flash 删除中间件上的数据
【发布时间】:2023-03-13 22:00:02
【问题描述】:

我正在使用 connect-flash 和 express 来处理 flash 消息,但是当我读取该属性时,这些消息会被删除,例如:

定义 Flash 消息:

req.flash("myMessage", "Hey!");

阅读留言:

console.log(req.flash("myMessage")); // Hey!
console.log(req.flash("myMessage")); // undefined

数据在第一次读取时被删除,这是一个问题,因为我需要在中间件中读取 req.flash 的数据以过滤 http 请求,然后在控制器中(在另一个文件中)我需要读取相同的 req.flash 数据,但我不能,因为在读取中间件时被擦除了。

在这种情况下我该怎么办?

【问题讨论】:

    标签: node.js middleware connect-flash


    【解决方案1】:

    消息内部存储在req.session.flash,请参阅the source code

    这意味着您可以通过直接索引到 req.session.flash["myMessage"] 来获取消息,而无需清除它。

    这在技术上是您不应该依赖的 req.flash() 的实现细节,但我认为如果您将 connect-flash 的版本固定在您的需求中,它就足够安全了。

    【讨论】:

      猜你喜欢
      • 2016-09-21
      • 2013-02-15
      • 1970-01-01
      • 2022-11-27
      • 2020-01-21
      • 1970-01-01
      • 1970-01-01
      • 2014-12-09
      • 2013-01-09
      相关资源
      最近更新 更多