Rails会话ID为零

问题描述 投票:3回答:2

我有一个Rails 2.3.5应用程序,我正在迁移到Rails 3.0.10,这会遇到会话问题。

某些代码在集成测试期间失败,因为会话没有id(request.session是空哈希,request.session_options [:id]是nil)。我们目前正在使用webrat,但同样的事情发生在capybara和标准的rails帮助器上。由于某些集成测试具有会话ID,因此似乎可以正确设置会话。看起来只有在尝试访问会话ID(即大多数)之前未登录的测试中缺少会话ID。

我已经尝试将会话后端(它当前基于cookie)切换到ActiveRecord,但这没有帮助。我已经创建了一个新的Rails 3.0.10应用程序,它还有nil会话id。我甚至挖到了Rails的会话处理,看起来如果会话缺少会话ID就没有生成会话ID。

缺乏会话ID是否存在于某处记录的预期行为?如果它是一个错误,是否有一个版本的Rails正确生成会话ID?

ruby-on-rails session
2个回答
3
投票

我已经看到如何解决这个问题的唯一方法是准备会议。

sid1 = session[:session_id]      
sid2 = request.session_options[:id]

但是,如果由于某种原因删除了会话cookie,它仍然可能发生。


0
投票

我试过了,没有结果。我也试过会话[:foo] ='bar',因为我喜欢它看起来更好的方式,但仍然没有结果。

我重新启动,仍然没有快乐。然后我进入浏览器设置并删除了我的cookie。修好了。根据这种经验,似乎cookie可以防止强制会话。我一直在更改类名和更改数据库表。不知怎的,我已经破坏了我的cookie。

© www.soinside.com 2019 - 2024. All rights reserved.