2013-08-13 8 views

Antwort

11

Hinzufügen von Express-Middleware in einer Segel-Anwendung ist einfach.

erstellen Sie eine neue Richtlinie.

policies 
    |_ 
    middleware.js/.coffee 

hinzufügen Express MiddlewareYOUR_MIDDLE_WARE_FILE_NAME.js

In Ihrer Middleware-Datei wir den Standard-Export für node.js

module.exports = require('middle-ware')(OPTIONS_GO_HERE) // See middleware docs for configuration settings. 

Dann erstellen, sobald Sie die Middleware erstellt haben Sie es für alle gelten können Anfragen oder einen einzelnen Controller, indem Sie der Sails.js-Vereinbarung folgen.

gesamte Anwendungpolicies.js

module.exports.policies = { 
    '*':['middleware'] // node same name as file without extention 
} 

Einzel-Controller Aktionpolicies.js

module.exports.policies = { 
    RabbitController:{ 
     feed:['middleware'] 
    } 
} 
+0

Ich habe es nicht geschafft, dies zu arbeiten. Irgendwelche Tipps für die Segel 0.11 –

7

Zunächst einmal @SkyTecLabs' Antwort ist der richtige Weg, dies zu tun. Aber ich wollte hinzufügen, dass Sie in einigen Fällen möglicherweise Ihre statischen Dateien (Bilder, clientseitige Javascript, CSS, etc.) auch steuern müssen (ich musste mich gerade damit befassen). In diesem Fall können Sie Middleware generisch auf jede Route anwenden.

Ab Sails.js v0.9.3, können Sie tun:

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

Mehr hier: https://gist.github.com/mikermcneil/6255295

In dem Fall, dass Sie Middleware vor einem oder mehreren Ihrer Controller oder Aktionen ausführen möchten , Sie sind definitiv besser bedient mit der Politik-Ansatz!

+1

Das funktionierte für mich. Ich konnte nicht herausfinden, wie ich die angenommene Antwort verwenden sollte. Insbesondere war ich nicht sicher, welche Optionen für OPTIONS_GO_HERE verwendet werden sollten und konnte nicht finden, wo das in der Dokumentation von sailsjs erwähnt wurde. – alarner

+0

Danke für den Tipp - wir werden uns sicher sein und arbeiten! – mikermcneil

Verwandte Themen