Отдельная сессия между доменами в Rails 5 - PullRequest
0 голосов
/ 31 октября 2018

Что мне нужно сделать, это разделить сеанс между этими поддоменами:

system.domain.com против portal.domain.com, blog.domain.com, domain.com

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

Я попытался написать промежуточное программное обеспечение:

class DomainSession
  def initialize(app)
    @app = app
  end

  def call(env)
    case
    when env["SERVER_NAME"].start_with?("system.")
      env["rack.session.options"][:domain] = env["SERVER_NAME"]
    when env["SERVER_NAME"].split(".").size < 3
      env["rack.session.options"][:domain] = env["SERVER_NAME"]
    else
      env["rack.session.options"][:domain] = env["SERVER_NAME"].split(".")[1..-1].join(".")
    end
    @app.call(env)
  end
end

и добавление хранилища сеансов следующим образом:

Rails.application.config.session_store :cookie_store, key: :_cross_session, domain: :all, tld_length: 2

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

Пожалуйста, помогите.

...