【问题标题】:Add express middleware for param validations为参数验证添加 express 中间件
【发布时间】:2013-08-15 11:18:48
【问题描述】:

在sails.js 应用程序中是否有包含express-middleware 的简单方法?

例如用express-validator扩展请求对象。

【问题讨论】:

    标签: node.js sails.js


    【解决方案1】:

    在 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']
       }
    }
    

    【讨论】:

    • 我无法让它工作。帆的任何提示 0.11
    【解决方案2】:

    首先,@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

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

    【讨论】:

    • 这对我有用。我不知道如何使用接受的答案。具体来说,我不确定要为 OPTIONS_GO_HERE 使用哪些选项,并且找不到sailsjs 文档中提到的位置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-14
    • 2021-06-09
    • 2014-08-05
    • 1970-01-01
    • 2018-02-06
    • 1970-01-01
    相关资源
    最近更新 更多