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.
  ]
});

Из документации "API":

@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, но он должен работать для других стратегий.

Пожалуйста, дайте мне знать иначе.

Другие вопросы по тегам