【发布时间】:2013-12-05 09:52:28
【问题描述】:
在我的 Symfony2.3 项目中,我有一个前端网站和一个后端。后端由 security.yml 文件保护,只有 role_admin 用户可以访问后端。
我现在想要的是只有管理员用户可以下载存储在资产中的 pdf 文件。
有没有办法做到这一点?
现在,所有访问者都可以通过 url 链接访问我的 pdfs 文件。
我是否必须将此 pdf 移动到另一个文件夹?或者可能使用 htaccess?
【问题讨论】:
在我的 Symfony2.3 项目中,我有一个前端网站和一个后端。后端由 security.yml 文件保护,只有 role_admin 用户可以访问后端。
我现在想要的是只有管理员用户可以下载存储在资产中的 pdf 文件。
有没有办法做到这一点?
现在,所有访问者都可以通过 url 链接访问我的 pdfs 文件。
我是否必须将此 pdf 移动到另一个文件夹?或者可能使用 htaccess?
【问题讨论】:
您需要将这些文件存储在您的网络服务器无法直接访问的位置。 (即 不在 web 文件夹或其子文件夹之一中)
然后创建一个控制器/动作,在提供文件之前检查下载权限(即某个用户角色)。
阅读文档章节 Serving Files 以快速了解如何在 symfony2 中提供文件。
【讨论】:
app/Resources 中创建一个子文件夹来存储您的文件。只是不要将其命名为public,因为包含的文件将被assets:install 命令拾取并被复制/符号链接到不需要的web 文件夹。我在答案中添加了指向文档的链接。
添加一个角色,例如 ROLE_ACCESS_PRIVATE ASSETS 并将其分配给管理员用户。像其他任何方法一样检查代码中的权限。
编辑:当然,这是假设控制器阻碍了这些文件。
【讨论】: