导轨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