gpt4 book ai didi

ruby-on-rails - 如何检查 Rails 中 session 的大小?

转载 作者:行者123 更新时间:2023-12-04 17:58:15 25 4
gpt4 key购买 nike

我希望 session.sizesession.lengthsession.count 可以工作,但它们都返回“undefined method”。为什么 session 不是哈希?

那是好奇心。实际问题:有没有办法以 KB 为单位检查 session 的大小?目前我的 session 存储在 cookie 中,它有 4 KB 的限制,当它超过时,它就会停止将新数据放在那里。很高兴知道什么时候发生,重置 session 或删除旧数据。

最佳答案

以下是 Rails 如何获取 session 大小:

首先获取session数据,参见(gems/rack/lib/rack/session/abstract/id.rb:352 commit_session)

data = session.to_hash.delete_if { |k,v| v.nil? }

然后它会加密数据,见(gems/actionpack/lib/action_dispatch/middleware/cookies.rb:640):

data = @encryptor.encrypt_and_sign(serialize(name, data))

最后,获取字节:

data.bytesize

您可以直接获取 session 数据,但很难手动加密。我一般会在gem代码处加个log来查看数据:

options[:value] = @encryptor.encrypt_and_sign(serialize(name, options[:value]))

puts options[:value].bytesize

raise CookieOverflow if options[:value].bytesize > MAX_COOKIE_SIZE

关于ruby-on-rails - 如何检查 Rails 中 session 的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38522082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com