为param验证添加快速中间件

jqu*_*lls 7 node.js sails.js

在sails.js应用程序中有一个简单的包含方式express-middleware吗?

例如,使用扩展请求对象express-validator.

jqu*_*lls 12

在sails应用程序中添加express-middleware很简单.

制定新政策.

policies
  |_
    middleware.js / .coffee
Run Code Online (Sandbox Code Playgroud)

添加Express MiddlewareYOUR_MIDDLE_WARE_FILE_NAME.js

在中间件文件中,我们为node.js创建标准导出

module.exports = require('middle-ware')(OPTIONS_GO_HERE) // See middleware docs for configuration settings.
Run Code Online (Sandbox Code Playgroud)

然后,一旦创建了中间件,就可以通过遵循Sails.js协议将其应用于所有请求或单个控制器.

整个申请policies.js

module.exports.policies = {
   '*':['middleware'] // node same name as file without extention
}
Run Code Online (Sandbox Code Playgroud)

单控制器动作 policies.js

module.exports.policies = {
   RabbitController:{
      feed:['middleware']
   }
}
Run Code Online (Sandbox Code Playgroud)


mik*_*eil 7

首先,@ SkyTecLabs的回答是正确的方法.但我想补充一点,在某些情况下,你可能还需要控制你的静态文件(图像,客户端javascript,css等)(我最近不得不处理这个问题).在这种情况下,您可以将中间件一般应用于每个路由.

从Sails.js v0.9.3开始,你可以这样做:

// Put this in `config/express.js`
module.exports.express = {
  customMiddleware: function (app) {
    app.use(require('../node_modules/sails/node_modules/express').basicAuth('balderdash', 'wickywocky'));
  }
};
Run Code Online (Sandbox Code Playgroud)

更多信息:https://gist.github.com/mikermcneil/6255295

如果您希望中间件在一个或多个控制器或操作之前运行,那么使用策略方法肯定会更好!