Ruby 在解密Rack::Session::Cookie之后,如何对其进行故障排除?

Ruby 在解密Rack::Session::Cookie之后,如何对其进行故障排除?,ruby,sinatra,mongoid,rack,Ruby,Sinatra,Mongoid,Rack,当我将参数传递给POST路由时,我不断得到一个错误 Warning! Rack::Session::Cookie data size exceeds 4K. Warning! Rack::Session::Cookie failed to save session. Content dropped. 我解密了曲奇,绝对没有任何东西出了问题。。。它看起来和它应该的一模一样 {"session_id"=>"94a15819b3b915556c120a5e83c75bfaab83bfce555

当我将参数传递给POST路由时,我不断得到一个错误

Warning! Rack::Session::Cookie data size exceeds 4K.
Warning! Rack::Session::Cookie failed to save session. Content dropped.
我解密了曲奇,绝对没有任何东西出了问题。。。它看起来和它应该的一模一样

{"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}
{“session_id”=>“94a15819b3b915556c120a5e83c75bfaab83bfce555bb81e78512adabbbbe654”
{“用户”=>#}
{“登录”=>true}

机架会话Cookie是否存在任何已知错误,从而导致错误触发?

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


与其在会话中存储整个
用户
对象,您只需存储它的标识符(例如
\u id
值)并在每个请求中查询数据库中的实际对象。

不幸的是,这并不能解决问题,不幸的是,我现在在三个单独的开发项目中遇到了它,我需要一些认真的资源尽快修复它=/有点太晚了,没有帮助;我看到这篇文章是因为我也有这条信息。也许这对未来的读者有所帮助:我发现存储在会话中的对象包含一个非常长的条目列表。这个线索来自于用p session打印session对象。机架没有错误,这是我自己的设计错误。