将参数传递给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的已知错误?
答案 0 :(得分:0)
看起来您正在将User
对象直接存储在会话中。我怀疑当它被序列化存储在cookie中时,它会引用其他对象,使得所有对象的组合大小超过限制。
不是将整个User
对象存储在会话中,而是应该为它存储一个标识符(例如_id
值),并在数据库中查询每个请求中的实际对象。