Безопасная ссылка для скачивания в Symfony 2 - PullRequest
8 голосов
/ 30 марта 2012

В моем проекте Symfony 2 у меня есть страница с информацией о сущности.На этой странице также есть ссылка на файл, связанный с этой сущностью.

Страница защищена и может отображаться только при наличии у пользователя определенной роли.Ожидаемая роль не одинакова для каждой сущности, поэтому она динамически проверяется в Action.

Моя проблема в том, что даже если страница защищена, любой может получить доступ к файлу через его URL.Я бы хотел, чтобы его можно было загружать только в том случае, если роль соответствует роли для отображения страницы.

Есть предложения о том, как мне это сделать или с чего начать?

1 Ответ

14 голосов
/ 30 марта 2012

Переместите файл за пределы общедоступного каталога, чтобы он не был доступен через URL В контроллере, если у пользователя есть правильные права доступа, разрешите ему загрузить файл.

Вы можете использовать это в вашем контроллере:

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

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