【发布时间】:2013-08-15 11:18:48
【问题描述】:
在sails.js 应用程序中是否有包含express-middleware 的简单方法?
例如用express-validator扩展请求对象。
【问题讨论】:
在sails.js 应用程序中是否有包含express-middleware 的简单方法?
例如用express-validator扩展请求对象。
【问题讨论】:
在 Sails 应用程序中添加 express-middleware 很简单。
创建新策略。
policies
|_
middleware.js / .coffee
添加 Express 中间件YOUR_MIDDLE_WARE_FILE_NAME.js
在您的中间件文件中,我们为 node.js 创建标准导出
module.exports = require('middle-ware')(OPTIONS_GO_HERE) // See middleware docs for configuration settings.
创建中间件后,您可以按照 Sails.js 约定将其应用于所有请求或单个控制器。
整个应用程序policies.js
module.exports.policies = {
'*':['middleware'] // node same name as file without extention
}
单控制器操作 policies.js
module.exports.policies = {
RabbitController:{
feed:['middleware']
}
}
【讨论】:
首先,@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'));
}
};
更多:https://gist.github.com/mikermcneil/6255295
如果您希望中间件在您的一个或多个控制器或操作之前运行,那么使用策略方法肯定会更好!
【讨论】: