在我的Symfony 2项目中,我有一个页面显示有关实体的信息。在此页面上还有一个指向与此实体关联的文件的链接。
页面是安全的,只有当用户作为特定角色时才能显示。每个实体的预期角色都不相同,因此它在Action中进行了动态测试。
我的问题是,即使页面受到保护,任何人都可以通过其URL访问该文件。我希望只有当角色与页面显示的角色匹配时才能下载。
有关我应该如何做的任何建议,或者从哪里开始寻找?
答案 0 :(得分:14)
将文件移到公共目录之外,这样就无法通过URL访问它。在控制器中,如果用户具有正确的权限,则允许用户下载文件。
您可以在控制器中使用它:
$headers = array('Content-Type' => 'application/pdf',
'Content-Disposition' => 'inline; filename="file1.pdf"');
return new Response(file_get_contents($file), 200, $headers);