2016-07-30 3 views
1

Я строю платформу в тот момент, состоит из 2 суб-доменов и основного сайта, например:Существуют ли сеансы между приложениями NodeJS?

example.com 
sub1.example.com 
sub2.example.com 

Эти 3 приложения в настоящее время работают независимо друг от друга на отдельном порту и направляется через Nginx.

Предположим, что sub1.example.com контролирует аутентификацию и т. Д. Здесь будет происходить логин и установка переменных сеанса и создание JWT. Будут ли данные сеанса перенесены из одного приложения в другое? Может ли sub2.example.com проверить данные сеанса?

Как бы исправить это?

Примечание: эти приложения первоначально были в одном приложении, но теперь разделены. В настоящее время сеансы хранятся с использованием Redis.

ответ

0

Данные сеанса не переносятся в другой поддомен, если вы явно не храните его в централизованной базе данных или в каком-либо хранилище, доступ к которому могут получить все поддомены.

Поскольку вы используете JWT, аутентификация должна выполняться во всех поддоменах, если они работают на разных серверах/процессах. Вам просто нужно будет поддерживать один и тот же секретный ключ.

Для сохранения данных сеанса, простой шаг будет - Если запрос пользователь заходит на какой-либо суб-домен:

  1. аутентифицировать запрос с использованием ключа API и JWT и хранить маркер в Redis, если это в первый раз

  2. Хранить ваши данные сессии против этого маркера в вашей постоянной базе данных

Теперь, когда другой запрос поступает от одного и того же пользователя с токеном JWT, аутентифицируется и видит ваш db, если данные сеанса присутствуют против этого идентификатора токена и используют их.

Надеюсь, это поможет.

1

Если каждый из них является другим сервером, выполняющим отдельный процесс node.js, вам нужно каким-то образом передать сеанс (или какой-то идентификатор) между ними.
Одним из способов может быть использование заголовка сеанса в ваших запросах, которые будут сообщать другим серверам, что вы уже вошли в систему.

+0

С одним флагом, чтобы сказать, что вы вошли в систему, все в порядке, но приложение использует ключи API и JWT для аутентификации по всем ресурсам. – nickcorin