2017-01-10 9 views
0

У меня есть два приложения в двух разделенных поддоменах: app1.example.com и app2.example.com, база данных разделяется между собой, хранилище сеансов в базе данных, вопрос это , если пользователь входил в первое приложение, а затем переключился на второе приложение, как я могу его войти в систему? Я использую sails.js и Redis для хранения сессийсовместное использование логина между субдоменами в парусах

ответ

0

Наконец он работает после добавления домена в куки для обоих приложений, Файл конфигурации/session.js

cookie{ 
domain: ".Example.com" 
} 
0

Это будет почти как масштабирование Подготовка приложения для кластерной развертывания

Самое главное, чтобы помнить о масштабировании приложения на стороне сервера заключается в том, что он должен быть без гражданства. Это означает, что вы должны быть , способный развернуть один и тот же код на n разных серверах, ожидая, что любой получит входящий запрос, обработанный любым сервером, и все, что должно быть . К счастью, приложения Sails готовятся к развертыванию такого типа практически сразу же из коробки. Но перед развертыванием вашего приложения на несколько серверов вам нужно сделать несколько вещей:

Убедитесь, что ни одна из других зависимостей, которые вы могли бы использовать в вашем приложении , не зависит от общей памяти. Убедитесь, что базы данных для ваших моделей (например, MySQL, Postgres, Mongo) являются масштабируемыми (например, sharding/cluster). Если ваше приложение использует сеансы: настройте приложение для использования общего хранилища сеансов , например Redis (просто раскомментируйте вариант адаптера в config/session.js) и установите адаптер connect-redis в качестве зависимости вашего приложения (например, npm install [email protected]~3.0.2 --save --save-exact). Если ваше приложение использует сокеты: настройте приложение для использования Redis в качестве общей очереди сообщений для доставки сообщений socket.io (раскомментируйте опцию адаптера в config/sockets.js) Установите адаптер сокета socket.io-redis 10 как зависимость от вашего app (например, npm install [email protected]~1.0.0 --save --save-exact) Если ваш кластер находится на одном сервере (например, используя режим кластера pm2) Чтобы избежать файла проблемы с конфликтом чтобы тратить задачи, всегда запускайте свои приложения в производственной среде и/или полностью отключите Grunt. См. Здесь для более подробной информации о проблемах Grunt в односерверных кластерах. Будьте осторожны с кодом config/bootstrap.js, который сохраняет данные в базе данных , чтобы избежать конфликтов при запуске бутстрапа несколько раз (один раз на узел в кластере)

+0

Спасибо за ответ, но я не спрашиваю о масштабировании, я просто хочу знать, как я могу применять единый знак для нескольких приложений, имеющих одну и ту же базу данных, и сеанс хранится на redis, который также используется среди них – aatsy

+0

Я сказал вам - вам нужно сделать ТО ЖЕ, как для размахивания. Два разных приложения, использующих одну и ту же базу данных, почти такие же, как и для одного и того же приложения. Разница в том, что вам нужно включить хранилище сеансов в REDIS для обоих, и он будет работать –

+0

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

0

то, что сработало для меня было убедиться, что у нас есть тот же секретный ключ для всех веб-приложений , Секретный ключ можно настроить в config -> session.js.

 Смежные вопросы

  • Нет связанных вопросов^_^