【发布时间】:2021-08-18 16:23:36
【问题描述】:
我无法让 Rails 会话在本地环境和外部暂存环境中持续存在。现在我只是在做一些基本的事情,比如我的一个控制器中的session[:cart_id]=1。如果我重新加载页面,会话将出现空{}。我一定错过了一些基本的东西,因为我在网上找不到任何关于这很常见的信息。
更新 1
即使是最简单的代码也会显示会话不持久,例如,我可以在我的操作中执行简单的操作,例如 session[:counter] = session[:counter].to_i + 1,然后在我的视图中执行 = debug session,每次刷新浏览器时我都会得到:
{} {"session_id"=>"280031b7eb3b4bf612da85acc8815b3b", "counter"=>1}
并且每次都会生成一个新的session_id。
更新 2
我从我的会话存储中删除了:domain => :all 选项,事情看起来更好了,但仍然没有持久。现在session_id 只生成一次,所以它一直存在。但是,如果我在会话中存储一个整数,它仍然不会持续到下一个请求。
【问题讨论】:
-
你的 Rails 版本和控制器代码是什么?
-
您是否在浏览器中禁用了 cookie?
-
您是否更改了会话的配置?该应用程序是从 Rails 2 迁移到 Rails 3 还是进一步迁移到 Rails 3.1?
-
这绝对不常见 - 刚刚在新应用中测试,这种情况仍然存在。
-
rails 3.0.9,用一些代码更新了我的原始帖子,我从未更改过默认会话存储:
Web::Application.config.session_store :cookie_store, :key => '_web_session', :domain => :all
标签: ruby-on-rails session