我们正在运行CakePHP 2.3 ...
我们需要控制对PDF文件的访问。例如,我们需要用户能够查看/下载他们自己的PDF而不是其他人。管理员可以查看所有内容。等
第一个问题是这些文件应该存在于CakePHP的目录结构中。
我们尝试使用/ webroot / files / ...但看起来这些是公开可访问的(即,任何人都可以直接导航到任何文件,如果他们知道完整路径:www.example.com/files/private.pdf
将文件存储在安全位置后,第二个问题是处理授权的最佳方法是什么,以便适当的用户可以访问正确的文件。
感觉CakePHP有一些内置的支持,但我们找不到它的文档。
答案 0 :(得分:1)
您需要在文件夹中添加.htaccess文件,无论您将PDF文件放在哪里,都要通过正常方式拒绝访问它们。 deny direct access to a folder and file by 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
答案 1 :(得分:1)
请勿将不的文件放在webroot中公开。那时不需要.htaccess修改。
要通过php将文件发送到客户端,有media view或request object。你将使用什么取决于你的CakePHP版本。
您正在使用的auth适配器将应用于FilesController :: download()方法或您的方法和控制器的名称。