導軌3
的會話cookie被存儲爲_app_session
。他們看起來很模糊,但他們只是base64編碼。您可以使用客戶端上的atob
函數解碼會話cookie並讀取您放入其中的任何信息。 (在Rails 4,你可能正在使用加密的會話cookie,你需要做的東西有點不同)
一個例子餅乾可能看起來是這樣的:
"BAh7CEkiD3Nlc3Npb25faWQGOgZFVEkiJWNlZjFjMDhiNjYyNWEzZDI5YWM5MTJlMDY3MmQ0NTM4BjsAVEkiGXdhcmRlbi51c2VyLnVzZXIua2V5BjsAVFsISSIJVXNlcgY7AEZbBmkHSSIiJDJhJDEwJE5MYlhOWHFUMEtoZmdnNFliZHdyeE8GOwBUSSIQX2NzcmZfdG9rZW4GOwBGSSIxSSt6TnJsZm1FOTZTNWFRWGdSVWtGK2Zmd3BPVUxkQURjWHBqZ2NoZ05nMD0GOwBG"
這將解碼弄成這個樣子:
atob(cookieStr);
"{I"session_id:ETI"%cef1c08b6625a3d29ac912e0672d4538;�TI"warden.user.user.key;�T[I" User;�F[iI""$2a$10$NLbXNXqT0Khfgg4YbdwrxO;�TI"_csrf_token;�FI"1I+zNrlfmE96S5aQXgRUkF+ffwpOULdADcXpjgchgNg0=;�F"
Rails的3/4
而不是從會話cookie我讀會添加一個單獨的cookie或只是用您想要的數據引導您的HTML代碼。
設定自己的Cookie在你的控制器或設計掛鉤:
cookies[:my_data] = {
value: { username: "rocketman", email: "[email protected]" }.to_json,
domain: "my.sweetapp.com"
}
在您的客戶端讀取該cookie:(使用一個lib像$.cookie簡化讀)
var cookieData, cookies = document.cookie.split('; ');
for (var i = 0, parts; (parts = cookies[i] && cookies[i].split('=')); i++) {
if (decode(parts.shift()) === "my_data") {
cookieData = JSON.parse(decode(parts.join('=')));
}
}
// Do something with cookieData;
是啊,我m搖動一些Rails 4.對此有什麼建議? :) – 2014-09-02 21:40:58
很酷。添加了我會在Rails 4中做的事。 – 2014-09-03 17:03:12
非常感謝!這真的很有幫助 – 2014-09-03 22:25:00