2013-12-18 4 views
1

Как я могу аутентифицировать веб-пользователей перед тем, как разрешить им «src» изображение или загрузить файл? Существует также некоторое условие, что эти файлы общедоступны.
Я думал, добавив фильтр global.asax в RegisterGlobalFilters

фильтр что-то вроде ..
MVC Authentication on file загрузить

public void OnFileRequest(string passToken) 
{ 
    //validate passToken 
    if (isValid(passToken)) 
     //allow download 
    else 
    { 
    //authenticate using session 
    if (authenticated) 
     //allow download 
    else 
     //return exception 
    } 
} 

ответ

0

аутентификации Использовать формы и проверки для печенья.

+0

есть определенные условия, когда эти файлы доступны публично. Я обновил свой вопрос. – evilom

+0

В этом ответе не рассматривается, как OP может сделать это для двоичных файлов, а не для страниц или представлений MVC, управляемых средой выполнения ASP.NET. – pwdst

1

Вместо прямого ссылки на фактический контент, храните словарь, который отображает уникальный идентификатор (GUID?) В фактический файл. Затем вы можете использовать результат действия, чтобы разрешить загрузку или нет.

Пример:

public ActionResult GetImage(Guid id){ 
    if(SomeFunctionToDetermineIfAllowed()){ 
     return new FileResult(...); 
    }else{ 
     return RedirectToAction("NotFound"); 
    } 
} 
+0

Это то, что я делаю прямо сейчас, и в результате требуется время для потоковой передачи файлов. – evilom

+0

Что это значит, требуется время для потоковой передачи файлов? Проверка авторизации должна быть буквально в миллисекундах, если у вас нет очень странного/не оптимизированного разрешения. Теперь, если файл имеет какой-то незначительный размер, тогда да, загрузка файла займет некоторое время. – Tommy

+0

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

0

Файлы, которые хранятся в некоторой папке, которую можно загрузить по запросу (с проверкой подлинности пользователя)

Для достижения этой цели, пожалуйста, выполните следующие действия.

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

    <location path="~/Download_url_page(Folder,File url).aspx"> 
    
        <system.web> 
    
         <authorization> 
    
         <allow users="John"/> // allow John to Download file. 
         <deny users="*"/> // deny others 
    
         </authorization> 
    
        </system.web> 
    
    </location> 
    

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

<authorization>

<deny users="?"/> //this will restrict anonymous user access

</authorization>

Я надеюсь, что это решит вашу проблему.

+0

есть определенное условие, когда эти файлы доступны публично. Я обновил свой вопрос. – evilom

+1

Это работает только с файловой машиной, зарегистрированной для обработки aspnet –