gpt4 book ai didi

php - 如何将临时文件与 Rails 中的用户 session 链接起来?

转载 作者:太空宇宙 更新时间:2023-11-03 16:25:28 24 4
gpt4 key购买 nike

Ruby on Rails 指南中写了类似下面的内容:

Do not store large objects in a session. Instead you should store them in the database and save their id in the session. [..] – http://guides.rubyonrails.org/security.html#session-guidelines

我想在 Ruby on Rails 4.1 中将临时文件(例如文本文件和 1.2M JPEG 图片)连接到用户 session 。数据库是没有选择的。我不想将文件保存在 blob 中,也不想保留记录以获取 ID,因为它是一个临时文件。我想要一个干净的系统,所以临时文件应该在它们过期后被清理掉。类似于PHP的session管理。

Rails 提供的其他 session 存储类型似乎也不适合这种情况。

是否已经有 gem 可供我使用? 是否有一个我没有看到的 Rails 路径来执行类似的操作?由于某些原因,这种行为对于 Rails 来说是不寻常的吗?

Tl;dr

我最近才意识到 PHP 存储 session 内容的方式与 Ruby on Rails 存储 session 内容的方式之间的差异。 PHP 仅在客户端存储 session ID - 内容存储在服务器上的文件中,而 Rails 使用 CookieStore 将所有内容保存在服务器上客户端。 PHP 的临时文件从 PHP 5.3 开始由垃圾收集器和它的 cron 任务清理。

最佳答案

使用内存缓存或类似的东西。创建一个 token 并将其存储在 session 中,然后使用它来访问缓存。

对于 PNG 图像:

# controller
session[:tmp_token] = SecureRandom.hex(12)
Rails.cache.put(session[:tmp_token], binary_png_data_converted_to_base_64)

显示base64编码的png

<img src="data:image/png;base64, <%= Rails.cache.fetch(session[:tmp_token]}%>" />

关于php - 如何将临时文件与 Rails 中的用户 session 链接起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25385093/

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