Как запустить несколько приложений Express/Nodejs на локальном хосте?

Я запускаю экспресс-приложение для клиентского (внешнего) приложения на порту 3000 и другое экспресс-приложение администратора на 8080.

Но когда я просматриваю любые страницы или обновляю любую страницу в клиентском экспресс-приложении, сеанс в приложении администратора теряется и перенаправляется на вход в систему.

Я использую Express-session npm для администратора, а интерфейс работает так же, как CMS, то есть без сеансов или чего-то сложного. Может ли кто-нибудь сказать мне, почему это происходит?


person Akhil Gopan    schedule 06.10.2016    source источник
comment
Не зная, как вы настраиваете обработку сеанса в своем коде, это невозможно сказать. Но я бы сомневался, что сеанс потерян из-за навигации в другом приложении узла. Более вероятно, что вы установили низкое время жизни для сеанса и что время простоя истекло из-за бездействия.   -  person t.niese    schedule 06.10.2016


Ответы (3)


Файлы cookie для приложения, работающего на порту 3000, также отправляются в приложение, работающее на порту 8080 (и наоборот).

Я предполагаю, что вы не дали каждому приложению уникальное имя файла cookie, поэтому вы можете получить помехи между обработкой сеанса обоих приложений.

Итак, используйте разные имена файлов cookie для каждого:

app.use(session({
  name : 'frontend.sid', // and, say, 'admin.sid' for the admin app
  ...
}));
person robertklep    schedule 06.10.2016
comment
Спасибо, Роберт. Это работает... И могу я спросить вас еще об одном, который я нашел, модуль хранилища сеансов памяти. Поскольку экспресс-сеанс сохраняет значение в хранилище памяти, использование его для производства нецелесообразно (как сказано в самом документе, оно не подходит для производства). Итак, использование хранилища сеансовой памяти оказывает какую-либо помощь в производстве ?? - person Akhil Gopan; 06.10.2016
comment
@AkhilGopan Я бы не стал использовать хранилище памяти в производстве. Но существует множество альтернатив, возможно, работать с базой данных, которую вы уже используете. - person robertklep; 06.10.2016
comment
Спасибо, Роберт... Я использую Postgres и буду использовать его. - person Akhil Gopan; 06.10.2016

Запускать в разных браузерах :

попробуйте один из них в другом браузере, например один в chrome, а другой в mozilla. Это происходит из-за конфликта сеансов там.

Смена браузера может быть хорошим решением для вас.

Хотите работать в том же браузере :

Просто запустите одну службу в normal mode и запустите другую службу в incognito mode.

person Amulya Kashyap    schedule 06.10.2016

Основываясь на предоставленной информации, я бы посоветовал вам обратить внимание на то, как вы инициализируете экспресс-сеанс. Если для флага secure установлено значение true, ожидается, что для локального хоста будет установлен действительный сертификат HTTPS, в противном случае сеанс не будет создан, что может вызвать проблемы с перенаправлением.

Из документов:

secure: задает логическое значение для атрибута Secure Set-Cookie. Когда true, установлен атрибут Secure, в противном случае - нет. По умолчанию атрибут Безопасный не установлен. Обратите внимание, что параметр secure: true является рекомендуемым вариантом. Однако для этого требуется веб-сайт с поддержкой https, т. Е. HTTPS необходим для безопасных файлов cookie. Если установлен безопасный режим и вы получаете доступ к своему сайту через HTTP, файл cookie не будет установлен.

person nmargaritis    schedule 06.10.2016