Rails将对象保存到cookie

xpe*_*int 5 cookies serialization ruby-on-rails

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

cookies[:mydata] = serialize({
  :key1 => 'tralala',
  :key2 => 'hahaha'
})
Run Code Online (Sandbox Code Playgroud)

谢谢!

vis*_*ise 15

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

请不要使用is,因为它很危险并且可能允许远程代码执行.我从这个答案中删除了它.

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

初始对象:

my_object = {:k1 => 'v1', :k2 => 'v2'}
Run Code Online (Sandbox Code Playgroud)

保存:

cookies[:my_data] = { 
  :value => my_object.to_json, 
  :expires => 4.years.from_now
}
Run Code Online (Sandbox Code Playgroud)

读:

my_object = JSON.parse(cookies[:my_data])
Run Code Online (Sandbox Code Playgroud)