我最近升级到Rails 3.0.7(来自Rails 2),我突然发现我的cookie不再有效了。在我能够设定到期日之前,一切都很顺利。我知道新的cookies.permanent做事的方式,但似乎也没有用(我的理解是旧的方式应该工作)。
这是我的代码,它非常直接:
cookies[:remember_me_id] = { :value => user.id.to_s, :expires => 365.days.from_now }
cookies[:remember_me_code] = { :value => Digest::SHA256.hexdigest(user.cookie_code), :expires => 365.days.from_now }
为了100%清楚,我也尝试过这个:
cookies.permanent[:remember_me_id] = user.id.to_s
cookies.permanent[:remember_me_code] = Digest:SHA256.hexdigest(user.cookie_code)
创建了Cookie,但问题是它们在浏览器关闭时设置为过期。我在Firefox和IE中检查过这个。在Firefox中,当我去查看cookie时,它说到期时是浏览器关闭的时间。这不是我想要的。
这里有什么简单的东西吗?一些新的Rails 3设置必须用于使cookie保持不变?
答案 0 :(得分:1)
我一直在遇到同样的问题,但只有在ms windows环境中使用WEBrick进行开发时:Rails 3.0.5,ruby 1.8.7(2011-02-18 patchlevel 334)[i386-mingw32]。
我发现在我常用的Linux环境中运行的WEBrick上执行相同的代码时,cookie到期工作正常:Rails 3.0.5,ruby 1.8.7(2010-08-16 patchlevel 302)[x86_64-linux])。上面列出的两种方法(设置:显式过期或使用“永久”访问器)似乎都适用于我的Linux机器。
因为问题似乎与Windows环境隔离,所以我没有详尽地搜索解决方案......但粗略搜索没有找到答案。你对这个问题有进一步的运气吗?
您是否正在开发Windows并且正在为您开启开发环境选项? (显然不是理想的)