Поделиться сессией между некоторыми поддоменами в Rails? - PullRequest
0 голосов
/ 28 марта 2019

Возможно ли разделить сеанс для какого-то особого поддоменов? Например, у меня есть некоторый поддомен:

  • admin.example.com
  • manager.example.com
  • user.example.com

и динамический поддомен с регулярным выражением: user.*.example.com (user.sub1.example.com)

когда пользователь входит через user.example.com => автоматический вход в систему user.*.example.com, но не входит в систему admin.example.com

Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 28 марта 2019

Оформить заказ на https://www.botreetechnologies.com/blog/how-to-share-session-between-rails-4-applications

В блоге рассказывается о Rails 4, но это решение применимо не только к любой версии Rails, но и к любому Rack-приложению

0 голосов
/ 28 марта 2019

Добавьте это в свой файл /config/initilizers/session_store.rb:

AppName::Application.config.session_store :cookie_store, key: '_application_devise_session', domain: :all

'domain: all' создает cookie для всех различных поддоменов, которые посещаются во время этого сеанса (и гарантирует, что они передаются между запросами). Если аргумент домена не передан, это означает, что для каждого отдельного домена, который посещается в одном сеансе, создается новый файл cookie, а старый удаляется.

В конечном счете, tld_length (длина домена верхнего уровня) в этом выражении. Значение по умолчанию tld_length равно 1, в то время как manager.example.come имеет значение tld_length 2, а 127.0.0.1.example.com имеет значение tld_length 5, например. Итак, то, что у меня было в файле session_store.rb для поддоменов на example.com в разработке и все остальное в работе, было ниже.

AppName::Application.config.session_store :cookie_store, key: '_application_devise_session', domain: :all, tld_length: 2

Для настройки для каждой среды вы можете использовать следующее:

Rails.application.config.session_store :cookie_store, key: '_my_app_session', domain: {
  production: '.example.com',
  development: '.example.dev'
}.fetch(Rails.env.to_sym, :all)

Источник: https://github.com/plataformatec/devise/wiki/How-To:-Use-subdomains

...