Обмен сессиями рельсов среди приложений - PullRequest
1 голос
/ 03 июня 2009

У меня есть два приложения, и я хочу, чтобы они поделились своими сессиями. Это тривиально, по крайней мере, пока. Сейчас я участвую в какой-то странной проблеме.

Я установил один и тот же ключ сеанса и секретный ключ в environment.rb, и два приложения не использовали один и тот же сеанс.

Проверено, если в файле development.rb есть что-то ... ничего.

Пытался очистить куки и т.д., ничего.

Затем я попытался изменить секрет, к счастью, я попытался изменить что-то короткое и простое (mysecret), и возникло что-то неловкое. Запущено приложение 1, но запущено приложение 2:

c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/session/cookie_store.rb:188:in `ensure_secret_secure': Secret should be something secure, like "f1e78444a4c3402165606a8314d29704".  The value you provided, "myownsecret", is shorter than the minimum length of 30 characters (ArgumentError)
    from c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_c

Но оба приложения работают в 2.3.2.

Затем я попробовал консоль для обоих приложений и убедился, что секрет очень похож.

Итак, что здесь может влиять?

1 Ответ

1 голос
/ 03 июня 2009

Может быть связано с доменными именами? Я почти уверен, что сессионный cookie хранится в домене. Вы можете попытаться использовать приведенный ниже код, чтобы переопределить его - при условии, что вы используете один и тот же домен с разными поддоменами для каждого приложения (поместите его в config / environment / production.rb - или development.rb, если вам нужно, чтобы он работал в режим dev тоже):

ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS[:session_domain] =  '.yourdomain.com'

Редактировать: в Rails 2.3 синтаксис:

config.action_controller.session = { 
  :domain => ".yourdomain.com" 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...