我正在构建一个rails应用程序,我想保护用户的下载。
情景是: 有一个项目的下载列为“/some_directories/some_file.zip”。
用户购买该文件,转到“我的下载”页面并单击“下载”。下载按钮正在检查用户是否确实购买了该文件,如果他这样做,则发送该项目的下载列的数据。一切都很好。现在,用户将看到下载的来源(example.com/some_directories/some_file.zip),并将URL发送给他的朋友。我的问题是,我该如何防止这种情况?我怎样才能让该项目的客户下载此文件,无论如何?
非常感谢
亚当
答案 0 :(得分:2)
另一种以可扩展的方式处理此问题的流行方法是使用Amazon S3并生成仅在短时间内有效的URL(例如3分钟)。
它不排除有人将URL发送给另一位朋友的可能性,但是如果他们正在下载某些内容,他们也可以稍后将其发送给他们的朋友。这里的想法是,它可以阻止某人在论坛上的某个论坛上发布URL,供人们在未来几年内访问。
S3 Documentation for time-limited query-string authentication.
答案 1 :(得分:1)
我遇到了和你一样的问题。我的解决方案是通过Paperclip将文件存储在数据库中,并使用authlogic和declarative_authorization限制访问。像魅力一样工作!
https://github.com/patshaughnessy/paperclip - 允许存储数据库文件的回形针版本。