Rails сохраняет объект в cookie - PullRequest
5 голосов
/ 01 февраля 2010

Как я могу сериализовать массив или объект и затем сохранить его в cookie?

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

Thx!

1 Ответ

15 голосов
/ 01 февраля 2010

Недавние уязвимости в 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])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...