2009-03-09 4 views
2

Скажем, у меня есть виртуальная папка/topFolder/в IIS7, и в этой папке может быть любой файл, который может отображаться в браузере (xml, html, swf, doc и т. Д.), Как правило «неуправляемые» ресурсы с точки зрения IIS). Прежде чем предоставить разрешение на открытие любого файла под папкой, мне нужно проверить некоторые переменные сеанса, чтобы узнать, имеет ли пользователь «лицензию» для подпапки и файла, о котором идет речь.Статические файлы и аутентификация в ASP.net

Я пробовал реализовать модуль с интерфейсами IHttpModule и IReadOnlySessionState, но Session всегда имеет значение null в событии AcquireRequestState, когда файл является «статическим», а не IIS (например, aspx, ashx и т. Д.).

Если я использую пользовательский HttpHandler, я получаю сеанс, но тогда мне также нужно реализовать способ отправки контента в ответ. Изменить. Поскольку пользователь не загружает файл, я просто хочу, чтобы IIS служил файлу, как это делает его StaticFileModule. Обработчик/Модуль должен быть действительно StaticFileModuleWithAuthorizationHook ...

Так что я действительно хочу сделать следующее: 1. Для запроса/topFolder/*: проверить сессию и лицензий и т.д. а) Если нормально, продолжать служить файл b) Если это не так, запрос прерывания или просто отправьте FORBIDDEN в ответ.

Надеюсь, кто-то может помочь.

ответ

1

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

This article (внизу) показывает пример того, как это сделать.

+0

Спасибо, но это немного другое. Imaginge URL http://myserver.com/topFolder/something/foo.html Я не буду его загружать, я буду обслуживать файл, но только после того, как я проверил сеанс и выполнил несколько обращений к базам данных. Это в основном открытый виртуальный каталог, который должен иметь специальную безопасность. –

+0

В этом случае просто выполните response.writebytes и напишите файл, не устанавливайте заголовок для настройки содержимого, и все должно быть в порядке! –

+1

Это не будет работать со случайным контентом. Если я попробую это с помощью .swf-файла, браузер не знает, как отображать, и просто отображает его как двоичные символы. Я действительно хочу, чтобы IIS отображал/обслуживал, как и после моих проверок, и не заботился о том, как браузер отображает случайный контент. –

 Смежные вопросы

  • Нет связанных вопросов^_^