Использование PHP Session и VueJS
Всем привет! После долгих раздумий решил разделить монолит на микро сервисы и в качестве фронта использовать VueJS. Назрел вопрос в котором я не нашел ответа на просторах интернета, как мне использовать сессии в VueJS для авторизации\контроля доступа, как мне передавать\принимать контент из office.example.com Структура проекта такая:
exaple.com (VueJS Front)
auth.example.com (API)
office.example.com (API)
Использовать JWT нет пока возможности. Может кто наталкивался на примеры? Важный момент, мы не используем Vue CLI...
Ответы (1 шт):
Для начала тебе что-бы сессия работала на всех серверах одинаково, тебе надо перенести её на отдельный сервер. В базу данных или лучше в какой memcached. Потом реализовать интерфейс SessionHandlerInterface https://www.php.net/manual/en/class.sessionhandlerinterface.php если используешь на backend какой-то готовый фреймворк типо ларавел, то там скорее всего это уже есть решение из коробки (https://laravel.ru/docs/v3/session/config) Database Session, Memcached Sesssion.
Далее тебе на всех доменах нужно реализовать Cors. Статей по поводу настройки Cors в интернете навалом.
Реализовать на всех серверах SSL сертификаты.
Ну и наконец правильно настроить транспорт, так что-бы тот-же fetch знал что к этому домену нужно передать так-же session_id.
ps: А что-бы не заниматься жесткой любовью со всем этим, есть хорошая добротная альтернатива, поставить reverse proxy например haproxy И не делить домены, а использовать pathbased проксирование. Например: example.com/api проксировать на один сервер, example.com/ переводить на loopback example.com/office проксировать на сервера офиса.