0

我们正在运行 CakePHP 2.3...

我们需要控制对 PDF 文件的访问。例如,我们需要用户能够查看/下载他们自己的 PDF 而不是其他人。管理员可以查看所有内容。等等。

第一个问题是这些文件应该位于 CakePHP 的目录结构中的什么位置。

我们对 /webroot/files/... 进行了试验,但似乎这些都是可公开访问的(即,如果知道完整路径,任何人都可以直接导航到任何文件:www.example.com/files/private.pdf

将文件存储在安全位置后,第二个问题是处理授权的最佳方式是什么,以便适当的用户可以访问适当的文件。

感觉 CakePHP 对此有一些内置支持,但我们找不到它的文档。

4

2 回答 2

2

不要将希望公开的文件放在 webroot 中。那时不需要 .htaccess 修改。

要通过 php 将文件发送到客户端,可以使用媒体视图请求对象。您将使用什么取决于您的 CakePHP 版本。

您使用的任何身份验证适配器都将应用于 FilesController::download() 方法或您的方法和控制器的名称。

于 2013-09-24T16:37:41.160 回答
1

您需要在保存 pdf 的文件夹中添加一个 .htaccess 文件,以拒绝通过正常方式访问它们。 拒绝通过 htaccess 直接访问文件夹和文件 将 pdf 文件放在哪里并不重要,尽管我建议在 webroot 文件夹中的某个位置以及它们自己的文件夹中。

然后,您需要在其中一个控制器中添加一个函数来显示 pdf,而不仅仅是链接到它。在 CakePHP < 2.3 中,您可以使用 mediaview 类来做到这一点。 http://book.cakephp.org/2.0/en/views/media-view.html 在更新版本的 cakePHP 中,它是通过发送文件。 http://book.cakephp.org/2.0/en/controllers/request-response.html#cake-response-file

于 2013-09-24T16:19:08.477 回答