У нас есть библиотека ZIP-файлов, которую мы хотели бы сделать доступными для загрузки на сайте ASP.NET.
Файлы хранятся на устройстве NAS, доступном из веб-фермы.
Вот наша первоначальная стратегия:
- Сопоставить виртуальный каталог IIS с общим диском по пути / zipfiles
- Пользователи могут загружать zip-файлы при наличии URL-адреса
Однако, если пользователи делятся ссылками на файлы, их может скачать любой. Вместо этого мы хотели бы использовать проверку подлинности на основе форм ASP.NET на нашем сайте для проверки запросов пользователей перед началом передачи файла.
Несколько проблем:
Запрос на zip-файл обрабатывается IIS, а не ASP.NET. Так что это не подлежит проверке подлинности форм.
Кроме того, мы не хотим, чтобы ASP.NET обрабатывал запрос , поскольку он использует поток ASP.NET и не масштабируется для загрузки больших файлов. Таким образом, настройка dll asp.net для обработки * .zip запросов невозможна.
Есть идеи по этому поводу?
Одна идея, которую мы бросили, заключается в следующем:
Первоначальный запрос на загрузку будет обработчиком Ashx. Этот обработчик после аутентификации сгенерирует маркер загрузки, который сохраняется в базе данных. Затем пользователь перенаправляется в файл с токеном, добавленным в QueryString (например, /files/xyz.zip?token=123456789). Плагин ISAPI будет использоваться для проверки токена. Кроме того, токен истекает через x количество времени.
Есть мысли по этому поводу? Я не реализовал плагин ISAPI, поэтому я не уверен, будет ли это работать.
Я бы хотел избежать пользовательского кодирования, поскольку безопасность - это проблема, и я бы предпочел использовать проверенное временем решение.