我正在将Rails应用程序从Rails 2直接升级到Rails 4.我正在使用带有CookieStore的新/config/initializers/session_store.rb
文件,但由于某些原因我的会话没有保存。
当试图做某事时
render :text => "#{request.session_options[:id]}"
我每次刷新都会得到一个新的会话ID。
我尝试过不同的浏览器,所有人都应该接受cookie。
我不知道发生了什么。为什么这些会议不会持续下去?!
编辑:谢谢大家的建议。这里有一些信息,还有一些我注意到的事情:
答案 0 :(得分:4)
作为一般答案,有几个可能的问题是
如果您尝试存储超过4K的数据,则会引发CookieOverflow。
如果安全令牌与预期不符,则会话 将被重置
protect_from_forgery
中的ApplicationController
行
答案 1 :(得分:2)
我有类似的症状。事实证明这是因为我添加了rails-api gem,它完全打破了会话保存。
答案 2 :(得分:0)
来自:Railscasts Episode 415 Upgrading to Rails 4
在秘密中,我们还需要进行一次配置更改 令牌初始化器。在Rails 4中,此文件中的配置选项 已从secret_token重命名为secret_key_base。我们需要 在我们从Rails 3转换但是一次时指定两个选项 我们已成功迁移我们的应用程序,我们可以删除 secret_token选项。最好为我们使用不同的令牌 secret_key_base。
这是必要的,因为我们正在从存储的序列化cookie转移 在客户端上加密的cookie。这可以轻松地防止用户 能够看到他们的会话cookie的内容。
这一集包含了一系列有关从2升级到4升的非常好的技巧,我能够成功地使用本教程。