使用 express-validator 作为 websockets 的中间件

Posted

技术标签:

【中文标题】使用 express-validator 作为 websockets 的中间件【英文标题】:Use express-validator as a middleware with websockets 【发布时间】:2018-12-24 21:32:44 【问题描述】:

我使用Sails.js + Passport.js authentication through websockets 为通过 websockets 的请求绑定了 passport.js 方法(使用 sockets.io),但是我应该如何添加 express-validator 方法以确保所有请求都有来自它的方法

【问题讨论】:

您有需要 express-validator 使用的示例代码吗? updateMinimumAmount: (req, res) => req.assert('schemeId', 'schemeId should be integer').notEmpty().isInt(); 当从套接字调用此方法而不是发出 http 请求时,我得到 req.assert notfound 但如果我用 http 请求调用它则不是这种情况 你能发布你的代码吗? 【参考方案1】:

您可以在不使用 customMiddleware 的情况下通过在 config/http.js 中添加“express-validator”来做到这一点:

order: [
      'startRequestTimer',
      'cookieParser',
      'session',
      'expressValidator',
      'bodyParser',
      'handleBodyParserError',
      'compress',
      'methodOverride',
      'poweredBy',
      '$custom',
      'router',
      'www',
      //'favicon',
      '404',
      '500'
],

expressValidator: require('express-validator')()

这应该让您快速验证器,您可以导入和使用它。

希望它能解决您的问题。

【讨论】:

但我认为它不会仍然包含在套接字请求中,套接字请求不会通过 http.js 获取中间件,正如我在问题中提到的 link 帮助我包含我在一个名为 bindpassport_boot.js 的新文件中编写的护照并将其保存在 app/boot 中。我怎样才能为其他图书馆做类似的事情 嗨@Jack,我试过这个解决方案,正如我上面所说的,它没有任何效果。任何作为 http 的 API 调用都从 express-validator 获取方法,但仍然来自套接字的 API 调用(使用 socke.io)仍然没有获取方法 你现在是如何导入它们的? 我将事情转移到 http 请求并删除了套接字请求 让我们挖掘一下插座和船帆。

以上是关于使用 express-validator 作为 websockets 的中间件的主要内容,如果未能解决你的问题,请参考以下文章

使用 Express-Validator 验证 POST 参数

如何使用express-validator在单独的文件中实现验证

javascript 使用express-validator的公共验证节点。

如何使用 express-validator 对嵌套对象进行验证

express-validator在Express 4中未正确初始化

javascript 如何使用express-validator验证表达式是否为空?