如何在解密之后对Rack :: Session :: Cookie进行故障排除看起来没什么问题呢?

时间:2017-02-23 01:16:50

标签: ruby sinatra mongoid rack

将参数传递给POST路由时,我一直收到错误告诉我

Warning! Rack::Session::Cookie data size exceeds 4K.
Warning! Rack::Session::Cookie failed to save session. Content dropped.

我解密了这个cookie,绝对没有任何与它无关......它看起来完全应该......

{"session_id"=>"94a15819b3b915556c120a5e83c75bfaab83bfce555bb81e78512adabbbbe654"}
{"user"=>#<OEDApp::User _id: 58502d2d07a0ee469cc0c065, created_at: 2016-12-13 17:17:33 UTC, updated_at: 2016-12-22 18:43:48 UTC, first_name: "", last_name: "", email: "", phone_number: "", encrypted_password: "XbUAU7w3poTt8uE7OUGwJw==", access_level: "Manager", is_active: true, is_admin: true>}
{"login"=>true}

是否存在可能导致错误触发的Rack Session Cookies的已知错误?

1 个答案:

答案 0 :(得分:0)

看起来您正在将User对象直接存储在会话中。我怀疑当它被序列化存储在cookie中时,它会引用其他对象,使得所有对象的组合大小超过限制。

不是将整个User对象存储在会话中,而是应该为它存储一个标识符(例如_id值),并在数据库中查询每个请求中的实际对象。