Ruby on rails Rails将对象保存到cookie

Ruby on rails Rails将对象保存到cookie,ruby-on-rails,serialization,cookies,Ruby On Rails,Serialization,Cookies,如何序列化数组或对象,然后将其保存到cookie中 cookies[:mydata] = serialize({ :key1 => 'tralala', :key2 => 'hahaha' }) 谢谢 最近rails的漏洞(特别是涉及机架的漏洞)让我质疑我最初推荐的Marshal.load方法有多安全 请不要使用is,因为它既危险又安全。我已经把它从这个答案中删除了 虽然没有那么灵活,但以下内容也应适用: 初始对象: my_object = {:k1 => 'v1',

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

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

谢谢

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

请不要使用is,因为它既危险又安全。我已经把它从这个答案中删除了

虽然没有那么灵活,但以下内容也应适用:

初始对象:

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])
保存:

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])
阅读:

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