Я хочу использовать сеанс БД в своем приложении Rails для нескольких доменов.Я понимаю, что это не оптимальный подход, но клиент, с которым я работаю, настаивает на этом.
Подход, который я выбрал для достижения этой цели, заключается в использовании ActiveRecord-SessionStore .Это позволило бы мне хранить данные сеанса на стороне сервера.
Теоретически, если я могу установить cookie маркера сеанса в браузере для каждого из общих доменов, они должны загрузить правильную запись сеанса избазы данных по каждому запросу.
# Headers
Set-Cookie: _mydomain_session=78bd9973o5d3424a37fa1fa1d52d22f3; path=/; HttpOnly
Оказывается, это намного сложнее , чем я ожидал, так как, похоже, не существует четкого способа установить или сбросить объект сеансав Rails.
В идеале Rails допускает что-то вроде:
# on domain 1
def my_action
session[:user_id] = @current_user.id
redirect_to("https://domain-2.com?session_id=#{session.id}")
end
# on domain 2
before_filter do
request.session.id = "ID-from-other-domain"
end
private
def current_user
@current_user = User.find(session[:user_id])
end
Как я могу разделить идентификатор сеанса между несколькими доменами (в Rails 4), чтобы позволить нам совместно использовать сеансы между доменами?