我有一个 PDF 文件,我不想通过我网站上的 URL 公开访问该文件。作为(轻微)安全层,我想通过电子邮件向用户发送一个唯一的、随机生成的 URL,他们可以从中下载 PDF,我将把该 PDF 存储在 AWS 或类似的地方。
我感觉自己被困在routes.rb监狱里,我不知道如何动态生成URL,也不知道如何正确创建随机URL,跟踪它们,或者将它们链接到本地或AWS上存储的文件。
有人对解决这个问题有什么建议吗?
您如何存储 PDF?如果你正在使用类似的东西回形针 https://github.com/thoughtbot/paperclip,您可以非常轻松地生成私有文件的临时公共 URL:
class Attachment < ActiveRecord::Base
has_attached_file :file
# ...
def file_url
file.expiring_url(10)
end
end
file_url
将为该文件生成一个 10 秒有效的 URL。然后,在任何相关的控制器中,您都可以为文件本身提供一个“show”方法,该方法在访问时快速重定向到私有 url:
class AttachmentsController < ApplicationController
# GET /whatever/attachments/:id
def show
redirect_to Attachment.find(params[:id]).file_url
end
end
要获得像您将发送的“随机”URL,您需要一个额外的步骤。你可以使用类似的东西生成一个长哈希SecureRandom.uuid
,并将其作为参数传递,使用类似的简单模型AttachmentProxy
.
就像是:
class AttachmentProxy < ActiveRecord::Base
has_one :attachment
# has an attribute called 'key', indexed...
end
在你的控制器中:
class AttachmentProxyController < ApplicationController
def show
proxy = AttachmentProxy.find_by_key(params[:key])
redirect_to proxy.attachment.file_url
end
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)