正在设置Rails cookie,cookie中的会话变量可读,会话不可读

时间:2010-06-04 15:57:18

标签: ruby-on-rails cookies session

在Rails 2中使用cookie存储设置会话变量时,我可以看到_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

意味着只要将任何内容添加到会话哈希中,就会设置会话ID,但不知何故会在下一个请求之前重置。我没有看到任何应该重置会话的地方。

为什么我可以看到正在设置会话cookie但我无法通过会话变量访问数据?

1 个答案:

答案 0 :(得分:4)

想出来。 似乎会话加载是懒惰的。

在您尝试访问会话之前,不会让您查看会话选项。

如果我把

if session.present?
end

在代码上方,会话被加载,我可以查看session_options。

奇妙。