Rails将对象保存到cookie

时间:2010-02-01 12:54:08

标签: ruby-on-rails serialization cookies

如何序列化数组或对象,然后将其保存到cookie中?

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

THX!

1 个答案:

答案 0 :(得分:15)

最近的rails漏洞(特别是涉及机架的漏洞)让我质疑我最初推荐的Marshal.load方法的安全性。

请不要使用is,因为它很危险且may potentially allow remote code execution。我从这个答案中删除了它。

虽然不够灵活,但以下内容也应该有效:

初始对象:

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])