Как я могу ограничить доступ к файлам PDF на моем сервере? - PullRequest
5 голосов
/ 03 марта 2010

Я использую ASP.Net MVC. Я ограничил доступ к веб-сайту с использованием аутентификации ASP Forms. Тем не менее, веб-страницы содержат ссылки на PDF-файлы на сервере, которые я также хочу защитить.

Например, пользователь может перейти к foo.com и foo.com/account/logon. После входа в систему они могут получить доступ к foo.com/category/bar, который представляет представление в bar.aspx. С этой точки зрения есть ссылка на foo.com/files/theta.pdf, которая прекрасно загружается в браузере. Однако я не хочу, чтобы файл foo.com/files/theta.pdf был доступен из браузера, если пользователь не прошел аутентификацию.

Как запретить пользователю получать доступ к foo.com/files/theta.pdf непосредственно из своего браузера без предварительной аутентификации на foo.com/account/logon?

Ответы [ 4 ]

8 голосов
/ 03 марта 2010

Передайте запрос через контроллер и верните FileResult. Вы можете применить любой метод защиты, который вы хотите, к методу контроллера, либо используя атрибут Authorize, либо проверив разрешения внутри метода контроллера.

Существует пример такого кода на этот вопрос , который иллюстрирует, как вернуть файл изображения. Просто верните pdf вместо файла изображения и используйте application/pdf в качестве типа MIME.

5 голосов
/ 03 марта 2010

Если вы хотите ограничить весь доступ к каталогу /files, вы можете просто использовать элемент location в вашем web.config для ограничения доступа.

* 1006 Е.Г. *

<location path="~/files">
  <system.web>
    <authorization>
      <deny users="?" />
    </authorization>
  </system.web>
</location>

Я должен добавить, что я согласен с Робертом и Робом в отношении повышенной безопасности, но если вы просто хотите простое решение, это должно сработать. : -)

HTHS,
Charles

1 голос
/ 03 марта 2010

Используйте FileResult, который я считаю встроенным в ActionResult. Это вернет двоичные данные, которые вы можете использовать для всех видов авторизации:

http://msdn.microsoft.com/en-us/library/system.web.mvc.fileresult.aspx

0 голосов
/ 11 мая 2019

Если вы использовали ASP.NET Core, вы можете использовать Ресурсная авторизация

Стратегия авторизации зависит от ресурса, к которому осуществляется доступ. Рассмотрим документ, который имеет свойство автора. Только автору разрешено обновлять документ. Следовательно, документ должен быть извлечен из хранилища данных, прежде чем может произойти оценка авторизации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...