Устанавливается cookie-файл Rails, переменная сеанса в cookie читается, сеанс не читается - PullRequest
1 голос
/ 04 июня 2010

При настройке переменных сеанса с помощью хранилища файлов cookie в Rails 2 я вижу, что переменная _domain_session установлена ​​так, как ожидается, и она отображается в файлах cookie в моем браузере.Однако всякий раз, когда я пытаюсь получить доступ к хэшу request.session, он всегда пуст, за исключением сразу после установки сеанса.

  # In a controller
  Rails.logger.debug "BEFORE SESSION_ID: #{request.session_options[:id]}"
  session[:user_id] = fbs[:uid]
  session[:access_token] = fbs[:access_token]
  render :text => '"Success"'
  Rails.logger.debug "SESSION_ID: #{request.session_options[:id]}"

Приведенный выше код всегда будет отображать

BEFORE SESSION_ID:     
SESSION_ID: f8db970260cb969156304a421036a8fb

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

Почему я могу видеть, как устанавливается сеансовый cookie, но я не могу получить доступ к данным через переменную сеанса?

1 Ответ

4 голосов
/ 04 июня 2010

Разобрался. Кажется, загрузка сессии ленива.

Он не позволит вам просмотреть параметры сеанса, пока вы не попытаетесь получить доступ к сеансу.

Если я поставлю

if session.present?
end

над кодом, сессия загружается, и я могу посмотреть на session_options.

Bizarre.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...