4

Rails 4 将包含基于加密 cookie 的会话。我们想从活动记录 cookie 存储更改为该存储。有没有办法在不打扰我的应用程序客户的情况下做到这一点?我不想删除所有当前会话。

4

3 回答 3

1

同意 Nathan 不要倒退,除非您因为会话存储而担心数据库性能。在这种情况下,我建议为您的会话而不是基于 cookie 的 Redis 或 Memcached 存储。

于 2013-10-17T19:49:42.793 回答
0

这是可行的,我只是用另一种方式做的(由于我不会进入的原因,我们需要将它们放在数据库中)。在应用程序控制器中,像这样放置一个前置过滤器:

prepend_before_filter :migrate_session

def migrate_session
  # migrating over old sessions
  session_model = YourSessionModel.find_by_session_id(session.id)
  if session_model
    data = session_model.data
    data.each do |key,value|
      session[key] = value
    end
    session_model.destroy
  end
end

进入会话哈希的所有内容都将保存在 cookie 中。在您不再有任何活动的记录会话后,您可以摆脱此代码。

于 2016-10-18T21:13:40.460 回答
-1

还有一个问题。我尝试从活动记录迁移到 cookie 存储,现在每个用户都会收到“我们很抱歉,但出了点问题”错误。解决方案是清除 cookie,但我必须告诉每个用户。他们中的许多人会认为该网站已损坏。所以这很糟糕。如果您无法联系到每个用户,那就太糟糕了。

于 2014-07-17T07:04:14.783 回答