Rails会话不会持久化

时间:2011-09-30 04:59:52

标签: ruby-on-rails session

我无法在本地环境和外部登台环境中保持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只生成一次,所以这是持久的。但是如果我在会话中存储一个整数,它仍然不会持久到下一个请求。

1 个答案:

答案 0 :(得分:4)

我有同样的问题,这让我疯了。

事实证明我的protect_from_forgery中有一个ApplicationController,它用NullSession默默地取代了会话。

当我跑raise session.class.inspect时,我注意到了这一点。

使用protect_from_forgery with: :exception代替正确揭示潜在问题。