Прекращение доступа не-пользователей к статическим ресурсам - PullRequest
0 голосов
/ 06 января 2012

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

Я мог бы использовать IHttpHandler и установить значение path, но я нене хочу, чтобы вручить файл вручную.Я бы хотел, чтобы запросы вошедших в систему пользователей проходили напрямую, больше похоже на IHttpModule, за исключением того, что я не могу указать путь для ограничения файлов, с которыми будет работать модуль.передавать запросы через обработчик или ограничивать путь модуля?

EDIT

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

1 Ответ

3 голосов
/ 06 января 2012

Если это действительно статические ресурсы (существуют на диске), то вы можете просто вставить их в папку и ограничить эту папку, используя элемент местоположения в файле web.config

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

Это предотвратит доступ неавторизованных пользователей к любым файлам, расположенным в папке MyPDFs на вашем сайте.

Если вы хотите использовать только подмножество этих файлов, вы можете создать подкаталог иЗащитите его аналогичным способом.

<location path="PDF/SecureSubDirectory">
   <system.web>
      <authorization>
         <deny users="?"/>
      </authorization>
   </system.web>
</location>

ОБНОВЛЕНИЕ:

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

Это все обрабатывается для вас по умолчанию при использовании Аутентификация с помощью форм в ASP.Net

Любой запрос на ресурс, который не выполняется из-за того, что пользователь еще не аутентифицирован, будет автоматически перенаправлен на настроенную страницу входа, определенную в вашем файле web.config.

<system.web>
  <authentication mode="Forms">
    <forms loginUrl="Logon.aspx" name=".ASPXFORMSAUTH">
    </forms>
  </authentication>
</system.web>

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

Все это запекается в фреймворке:)

...