Rails将对象保存到Cookie

5

我应该如何将数组或对象序列化并保存到 cookie 中?

cookies[:mydata] = serialize({
  :key1 => 'tralala',
  :key2 => 'hahaha'
})

Thx!

1个回答

15
最近的Rails漏洞(尤其是涉及rack的那个),让我怀疑最初我推荐的Marshal.load方法有多安全。请不要使用它,因为它很危险,可能会导致远程代码执行。我已经从这个答案中删除了它。
虽然不像Marshal.load那样灵活,但以下方法应该也可以工作: 初始对象:
my_object = {:k1 => 'v1', :k2 => 'v2'}

保存:

cookies[:my_data] = { 
  :value => my_object.to_json, 
  :expires => 4.years.from_now
}

阅读:

my_object = JSON.parse(cookies[:my_data])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接