2012-01-05 2 views
2

У меня есть каталог в корне моего сайта, который содержит некоторые файлы (обычно html). Эти файлы должны быть доступны только для зарегистрированного пользователя. Как я могу это достичь? Я считаю, что это можно сделать с использованием олицетворения, но я не знаю, как именно я могу это реализовать. Не могли бы вы направить меня в правильном направлении?Безопасность в ASP.Net

В настоящее время, я добавил эти параметры в моем файле Web.config:

<location path="TestData"> <!-- 'TestData' is the directory which I want to deny access for --> 
    <system.web> 
     <identity impersonate="true"/> 
     <authorization> 
      <deny users="?"/> 
     </authorization> 
    </system.web> 
</location> 

есть все, что я должен делать в кодировании?

PS: Это приложение для веб-серфинга.

Обновление: Это работает частично !!! Конкретно: Он отрицает только страницы .aspx, и даже зарегистрированный пользователь тоже не может получить доступ к файлам.

Я использую аутентификацию Windows.

ответ

1

Вам не нужно выдавать себя за другое лицо. Если у вас есть форма или проверка подлинности Windows, ваш <deny users="?"/> лишит всех анонимных пользователей. Чтобы ответить на ваш вопрос: нет, вам не нужно явно запрещать пользователям в вашем коде.

How to: Implement Simple Forms Authentication

Для обеспечения non-ASP.NET файлов, вам нужно будет зарегистрировать HttpHandler, который будет делать это. См. this reference on how to register the handler.

+0

Я обновил мой вопрос. – NaveenBhat

+0

@Knvn вы вынимали раздел «выливания»? Вы не должны получать частичный доступ, так как у вас есть авторизация каталога. –

+0

Я попытался удалить раздел 'impersonate', но все же он работает только для' .aspx', а не для других типов, таких как '.html' или' .txt' – NaveenBhat

0

Вам не нужен олицетворяющий. Impersonate предназначен для того, чтобы приложение выполнялось как другой пользователь от пользователя пула приложений в iis. source

Если вы используете формы аутентификации/окна, то

<authorization> 
    <deny users="?"/> 
</authorization> 

должно быть достаточно, и будет блокировать пользователей, которые не вошли в

+0

Я обновил свой вопрос. – NaveenBhat

0

Вам нужно добавить

<authorization> 
     <deny users="?"/> 
</authorization> 

в <system.web></system.web>

И использовать проверку подлинности l икэ

[Update]: Как использовать окна аутентификации см

MSDN

+0

Я могу использовать аутентификацию «Forms», если это веб-приложение ... но его приложение для веб-серфинга, и я аутентифицируюсь, возвращая соответствующие значения в клиентское приложение (flash). – NaveenBhat