我使用的轨道会话使用默认cookie存储,而我访问会话对象,并使用Rails的会议更好地了解
session[:my_var] = 'abc'
读/写变量,我可以在我的应用程序加载一个行动,这设置这个会话变量,并在我的浏览器中查看我的“_appname_session”cookie。查看这个cookie在轨控制台的内容,通过
Marshal.load(Base64.decode64(CGI.unescape("[paste cookie here]".split("\n").join).split('--').first))
我看到
{:session_id=>"[some long key]", :my_var=> 'abc'}
都很好。
如果我加载其他行动,其中包含的代码
session[:another_var] = 'abc'
我再次解码的cookie,但这次看到
{:session_id=>"[a different key]", :another_var=> 'abc'}
所以我的问题是,为什么我会看到不同的值for:session_id,并且会话对象/ cookie中的my_var在哪里有?
另外 - 我已经使用Active Record Store尝试了这个例子,现在在我的数据库中看到相同的结果,显示为会话表中的新行。
非常感谢!
相同的浏览器?同一浏览器窗口?哪个浏览器? – 2012-01-06 16:21:23
你确定会话没有被清理到某个地方,比如隐藏在ApplicationController before_filter中吗? – 2012-01-06 16:21:29
我认为你需要展示更多的代码。这是非标准的行为,所以其他的东西一定是干涉的。 – 2012-01-06 16:59:23