【问题标题】:Rails cookie being set, session variable in cookie readable, session not readable正在设置 Rails cookie,cookie 中的会话变量可读,会话不可读
【发布时间】:2011-02-27 21:08:16
【问题描述】:

在 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,但我无法通过会话变量访问数据?

【问题讨论】:

    标签: ruby-on-rails cookies session


    【解决方案1】:

    想通了。 似乎会话加载是惰性的。

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

    如果我放

    if session.present?
    end
    

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

    奇怪。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-08
      • 1970-01-01
      • 2015-02-26
      • 1970-01-01
      • 2016-05-26
      • 1970-01-01
      • 2012-01-11
      • 2015-01-23
      相关资源
      最近更新 更多