Как я могу вручную установить cookie в ответе Rails? - PullRequest
0 голосов
/ 26 октября 2018

Я хочу использовать сеанс БД в своем приложении 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), чтобы позволить нам совместно использовать сеансы между доменами?

...