flatiron.js / union - где разместить конфигурацию app.use()?
Взяв простой пример из Union, мне интересно, куда я могу поместить конфигурационный код, который обычно идет в app.configure, например, http://passportjs.org/:
app.configure(function() {
// Initialize Passport! Also use passport.session() middleware, to support
// persistent login sessions (recommended).
app.use(passport.initialize());
app.use(passport.session());
});
Есть идеи? сервер и маршрутизатор не принимают use().
3 ответа
Союз, кажется, использует before
Коллекция для этого:
var server = union.createServer({
before: [
connect.session({ secret: 'keyboard cat' }), // for `passport.session()`
passport.initialize(),
passport.session(),
// etc.
]
});
@option before {Array}
The `before` value is an array of middlewares, which are used to route and serve incoming
requests. For instance, in the example, `favicon` is a middleware which handles requests
for `/favicon.ico`.
Union поддерживает подключение промежуточного программного обеспечения через before
собственность, как ранее упоминалось другими. Однако union не обрабатывает конфигурацию приложения; Флатирон делает. API, однако, значительно отличается от экспресс.
Например, настройка приложения может выглядеть примерно так:
var path = require('path'),
flatiron = require('flatiron'),
app = flatiron.app,
plugins = flatiron.plugins,
connect = require('connect'), // most connect middlewares work with flatiron ootb
passport = require('passport');
// Use flatiron's http plugin (not the same as a middleware!)
app.use(plugins.http);
// configuration consists of key/value pairs, not of function blocks associated with
// certain "environments".
// Here's *a* way you can handle environment-based configs; there are others!
app.config.file(path.resolve(
__dirname,
'config',
(process.env.NODE_ENV || 'config') + '.json'
));
// Use our config to set the secret
app.http.before.push(connect.session({
secret: app.config.get('secret') || 'keyboard cat' //default
}))
app.http.before.push(passport.initialize());
app.http.before.push(passport.session());
Я не пробовал запускать этот пример (я уверен, что здесь есть больше деталей), но, надеюсь, это даст вам представление.
Я только что создал оболочку для интеграции Passport.js с Flatiron.js.
https://npmjs.org/package/flatiron-passport
https://github.com/travist/flatiron-passport
Пожалуйста, прочтите README.md о том, как его использовать и примените к вашему заявлению.
Я проверил его на LocalStrategy, но он должен работать для других стратегий.
Пожалуйста, дайте мне знать иначе.