Блокировка статического контента в MVC 3 - PullRequest
0 голосов
/ 21 июня 2011

Каков наилучший способ запретить пользователям загружать определенные файлы из моего каталога содержимого?

Должен ли я добавить файл Web.config в / Content, как у меня уже есть в / Views?

<?xml version="1.0" encoding="utf-8"?>
<configuration>

  <system.web>
    <httpHandlers>
      <add path="SecretFolder/*" verb="*" type="System.Web.HttpNotFoundHandler" />
      <add path="SecretFile.pdf" verb="*" type="System.Web.HttpNotFoundHandler" />
    </httpHandlers>
  </system.web>

</configuration>

Или я должен создать собственное правило маршрутизации?

Или есть еще лучший способ?

Ответы [ 2 ]

1 голос
/ 21 июня 2011

В основном точно так же, как у вас выше - как ДОЛГО, поскольку у вас нет другого маршрута, который мог бы добраться до этого через контроллер.Судя по типам и структуре файлов, похоже, что это не так (проблема в том, что у вас есть два маршрута, идущих к одному и тому же файлу - и использование элементов авторизации в web.config рекомендуется в MVC специально по этой причине.)

Вы хотите использовать именно то, что уже используется MVC.Смотрите интеграцию «HttpNotFoundHandler» в ваш web.config по адресу (я знаю ... у вас уже есть): http://completedevelopment.blogspot.com/2011/06/using-views-outside-of-views-or-other.html

Вот как содержимое внутри вашей папки / Views уже заблокировано - так что этоуже 'mvc-ish'

1 голос
/ 21 июня 2011

Это именно то, для чего элемент <authorization> предназначен в web.config.Это даст вам детальный контроль над тем, что пользователи могут видеть, какие файлы.Вы можете предоставить столько контроля, сколько вам нужно.

<location path="SecretFolder">
  <system.web>
    <authorization>
      <allow roles="admin" />
      <deny users="*" />
    </authorization>
  </system.web>
</location>

Однако это предполагает, что вы осуществляете авторизацию ASP.NET с использованием IPrincipal,который я бы порекомендовал, если вам нужен такой контроль над вашим контентом.

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