使用 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 对嵌套对象进行验证