Совместное использование веб-сессий между приложением Rails 5.2 и Golang - PullRequest
0 голосов
/ 05 октября 2018

У нас есть приложение Rails, которое является основным сайтом, но мы создали отдельное приложение в Golang, которое обрабатывает множество других функций в реальном времени, таких как видео и аудио звонки, сообщения и разделы доски.

Проблема, с которой мы столкнулись сейчас, заключается в том, что мы не знаем, как делиться веб-сессиями между двумя приложениями.Когда вы переключаетесь между приложением Rails на Golang.Как и при переходе из Gmail в Google Drive и на YouTube, сеанс остается тем же, даже если эти приложения работают в разных поддоменах и иногда на разных языках.

Мне удалось добавить сеанс из Rails + Devise / Warden вcookie браузера, но cookie зашифрован.Как мне расшифровать или использовать этот файл cookie для аутентификации пользователя в Go?

Не могли бы вы, ребята, поделиться со мной, как бы вы подошли к решению этой проблемы в вашем собственном приложении?

Использование этого answer Мне удалось заставить файл cookie сеанса появляться как на основном сайте в React + Rails, так и на поддомене в React + Golang, но файл cookie зашифрован, как мы можем расшифровать / получить значения там?например user_id?

1 Ответ

0 голосов
/ 05 октября 2018

Вы можете разделить сеанс между двумя бэкэндами (независимо от бэкэндов), используя redis хранилище данных в качестве центральной общей памяти.

Таким образом, каждый раз, когда вы создаете новый сеанс в Rails или Go приложении:

  • Создание идентификатора сеанса (например, UUID) a59eb448-d268-413e-a837-b5aefc65a4b2
  • Вы сохраните данные сеанса в redis с этим уникальным идентификатором сеанса (a59eb448-d268-413e-a837-b5aefc65a4b2).
  • Вы сохраняете свой идентификатор сессии в файле cookie, совместно используемом двумя доменами платформ.Так что, если это были rails.mydomain.com и go.mydomain.com, вам нужно сделать куки доступными из обоих поддоменов *.mydomain.com.
  • Когда пользователь с этим куки-файлом получает доступ к любой вашей платформе.Вы можете прочитать идентификатор сеанса из его файлов cookie и использовать его для запроса повторного просмотра и получения информации о сеансе (user_id и т. Д.).

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

...