У меня есть несколько приложений, которые я пытаюсь объединить в один "набор": 2 приложения являются автономными, один - просто слоем auth (используя everyauth для FB Connect). Я хочу настроить его так:
- /- (домашний) список приложений
- /auth - логин для любого приложения
- /app1 - требуется вход через /auth для доступа
- /app2 - (тот же)
Я рассмотрел возможность оставить app1 и app2 автономными, причем верхний слой является прокси-сервером, но я думаю, что было бы сложно разделить между ними систему auth. Virtualhosts (через Connect) может работать, но мне не обязательно нужен субдомен DNS'd для каждого из них. Поэтому вместо этого я хотел бы, чтобы основное приложение являлось слоем auth, а остальные "монтировались" в него, причем базовый путь, установленный в каждом приложении, был подпуть. (базовый путь упоминается в выражении Guide, но не задокументирован.)
Все они используют MongoDB, уровень auth использует connect-mongodb для сеансов, поэтому я надеюсь, что они смогут совместно использовать весь уровень аутентификации/сеанса между ними.
В другом потоке Как обмениваться сеансами в установленных экспресс-приложениях, пишет Стивен,
У меня довольно сложное экспресс-приложение для веб-приложений, которое разделено на несколько вспомогательных приложений, которые также являются экспресс-приложениями (с помощью app.use())...
Итак, как использовать app.use()
для монтирования суб-приложения? Я просто пытался использовать var subApp = require('./subapp/app.js')
, при этом listen()
работает только в суб-приложении, когда ! module.parent
(а не как суб-приложение)... но это, похоже, загружает все пути суб-приложения прямо в родительское приложение. Я пробовал настройку basepath
с помощью app.set('basepath', '/subapp/')
, app.basepath = '/subapp/'
и т.д. Как в самом суб-приложении, так и в родительском приложении, но это, похоже, не имеет никакого эффекта.
Установка таких приложений делает невероятно гибкой, но неясно, как это сделать... любые советы были бы очень желанными! (И я рад поделиться уроками из моей реализации everyauth, если кто-то борется с этим.)