使用Apache直接为经过身份验证的用户下载文件


Download files directly with apache for authenticated users

这是交易,我正在出售一些文件,可以下载它们。

因此,只有为文件付费的用户才能下载它们。出于多种原因,我想避免通过PHP脚本下载- 文件很大(有些是~5GB)- 如果下载粉碎,它必须重新开始。

有什么办法吗?任何可以帮助我识别允许下载文件的用户的策略,并让 apache 完成这项工作(提供下载的直接链接),而不是使用 PHP 脚本来流式传输文件。

有什么想法吗?

mod auth token 怎么样?

http://code.google.com/p/mod-auth-token/

可能是一个很好的解决方案 - 我使用类似的策略,但使用我自己的模块。

任何URL都可以共享,因此您必须保留文件已下载的指示,否则付费访问者可以发布URL,任何人都可以下载它。

使用 PHP,您可以在传输整个文件后设置一个标志(大致表示下载成功),因此无法再次下载文件。

您也可以使用某种身份验证,但话又说回来,凭据可以共享。

一个相当简单的解决方案是使用虚函数。您将对用户进行身份验证,然后关闭对 Apache 的请求。这不是使用 php 来流式传输文件。

通过一些智能,您可以创建指向真实文件的符号链接,并在文件下载后将其关闭。

用户

购买文件:您创建一个符号链接并将唯一的URL发送给用户。然后,您可以监视日志文件,并在下载文件时禁用符号链接。或者,如果您无法访问日志文件,您可以将用户发送到仅在用户访问时创建符号链接的 PHP 文件,然后在一定时间后关闭符号链接(尽管您如何确定该时间是什么,我不确定)。

不是一个完美的解决方案,只是抛出一个想法。