[英]Symfony secure folder with assets
我正在尝试使用某些资产(pdf文件等)来保护我的Symfony 2.7
项目的公共文件夹,因此只有登录用户才能访问它们。
想象一下文件夹结构:
-- web
| -- uploads
| -- public
| -- secured
我希望每个人(甚至是匿名用户)都能访问web/uploads/public
文件夹中的所有文件,但只能访问注册用户访问web/uploads/secured
文件夹中的文件。
我已经尝试在access_control
使用此规则设置security.yml
:
- { path: ^/uploads/secured, role: ROLE_USER }
但这仅适用于不用于公用文件夹中文件的路由。
这甚至可能吗? 或者我需要制作某种控制器,它将覆盖我的文件路由,另外还要检查是否允许用户查看文件?
查看静态文件时不会调用Symfony(或任何其他PHP脚本)。 它仅在你的前控制器命中时被调用(app.php)。
使用您的Web服务器来保护对资产的访问,或者将它们放在公共目录之外并使用控制器来为它们提供服务。
从Symnfony 3.2,您可以将文件存储在非公共路径中。 从控制器路由文件检查权限或您需要的任何内容。 然后,您可以使用文件控制器帮助程序来为它们提供服务。
Class FileController extends Controller
{
/**
* @Route("/file/download/{id}", requirements={"id": "\d+"}, name="file_download")
*/
public function downloadAction($id)
{
$file = $this->repository->find($id);
$path = __DIR__ . '/../../var/files/' . $file->getFilePath . '/' . $file->getFileName();
return $this->file($path);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.