Что мне нужно сделать, это разделить сеанс между этими поддоменами:
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
Я также написал спецификации для этого и выглядел так, как будто все было хорошо, однако при ближайшем рассмотрении он не функционировал, как ожидалось.
Пожалуйста, помогите.