保护Symfony 2中的下载链接

时间:2012-03-30 08:48:04

标签: security symfony download

在我的Symfony 2项目中,我有一个页面显示有关实体的信息。在此页面上还有一个指向与此实体关联的文件的链接。

页面是安全的,只有当用户作为特定角色时才能显示。每个实体的预期角色都不相同,因此它在Action中进行了动态测试。

我的问题是,即使页面受到保护,任何人都可以通过其URL访问该文件。我希望只有当角色与页面显示的角色匹配时才能下载。

有关我应该如何做的任何建议,或者从哪里开始寻找?

1 个答案:

答案 0 :(得分:14)

将文件移到公共目录之外,这样就无法通过URL访问它。在控制器中,如果用户具有正确的权限,则允许用户下载文件。

您可以在控制器中使用它:

$headers = array('Content-Type'     => 'application/pdf',
                 'Content-Disposition' => 'inline; filename="file1.pdf"');

return new Response(file_get_contents($file), 200, $headers);