Сеансы в микросервисной архитектуре для системы электронной коммерции

Я планирую разработать микросервисную систему электронной коммерции в качестве доказательства концепции. Архитектура состоит из 3 компонентов:

  • одностраничное приложение на основе javascript, которое отправляет запросы AJAX на

  • сервер (шлюз API) с REST API, который передает данные JSON, полученные при вызове других служб.

  • 3 сервиса: CatalogProvider, CustomersProvider, CheckoutProvider

На данный момент все сервисы являются конечными точками API Magento Shopsystem.

Когда я пытаюсь войти в систему пользователя в системе Magento, отправив запрос в REST API, очевидно, сервер не запоминает сеанс при отправке следующего запроса.

Также я обрабатываю корзину на стороне сервера с помощью Magento и добавляю/обновляю/удаляю элементы с помощью вызовов REST Api. Здесь также теряются добавленные элементы при отправке следующего запроса, поскольку сеанс был потерян.

Итак, мой вопрос:

Каковы возможные подходы к решению проблем, связанных с обработкой сеансов в микросервисной архитектуре?


person Rouzbeh    schedule 19.02.2015    source источник
comment
Здравствуйте, вы нашли хорошее решение вашей проблемы? Можно ли поделиться с другими? У вас есть время, чтобы протестировать / реализовать предложение возможного ответа, если я начну новую награду? Сама проблема меня интересует, но у меня сейчас нет ни случая, ни времени, чтобы проверить ее :) Спасибо   -  person JonaPkr    schedule 10.03.2015
comment
Не имеет прямого отношения к php, но... presos.dsyer.com/decks/microservice-security. html   -  person Christophe Roussy    schedule 09.02.2016


Ответы (4)


Я предлагаю вам взглянуть на аутентификацию на основе токенов.

Кроме того, вас могут заинтересовать веб-токены JSON.

person VRPF    schedule 24.02.2015
comment
Спасибо за ваше предложение. Знаете ли вы какие-либо полезные и хорошие источники, где можно прочитать об этих концепциях? - person Rouzbeh; 25.02.2015

Вы можете сохранить пользовательские состояния в таблице.

Когда пользователи входят в систему, создают один уникальный идентификатор и сохраняют его в таблице с текущей отметкой времени и IP-адресом клиента. На стороне клиента создайте пару ключ-значение и сохраните ее в файлах cookie. Используйте его как сеанс.

Теперь у вас есть много вещей, чтобы проверить существование пользователя.

person Shaharukh Qureshi    schedule 02.03.2015

если вы используете jvoid, который является проектом schgoni (владелец magento), он создает идентификатор сеанса и сохраняет его внутри mysql, и он уже имеет встроенный модуль безопасности spring

Я думаю, что для аутентификации микросервиса архитектура безопасности на основе oauth2 была бы лучше. Использование токенов oauth при вызовах покоя решит проблему аутентификации.

person Burak savurur    schedule 28.08.2015

А как насчет создания еще одного микросервиса — SessionProvider? Служба будет отвечать за создание и сохранение состояний и переменных сеанса, каждый сеанс будет идентифицироваться уникальным идентификатором сеанса, другие службы могут взаимодействовать с SessionProvider через этот идентификатор.

person user2293072    schedule 18.09.2015