2015-07-21 3 views
1

Мы столкнулись с проблемой при загрузке медиа-элемента в нашем решении Sitecore. Мы хотим выполнить аутентификацию пользователя, загружающего носитель. Если у пользователя нет доступа к файлу, нам необходимо перенаправить загрузку этого пользователя/отменить.Sitecore - получить информацию о медиа-элементе по запросу

Вещь, которая решает перенаправление, представляет собой метаданные этого объекта мультимедиа (поле с идентификатором).

Мы сделали модуль:

<add type="Lib.CustomMediaRequestSessionModule, Lib" name="CustomMediaRequestSessionModule" /> 

Код:

public class CustomMediaRequestSessionModule : IHttpModule 
{ 
    public void Init(HttpApplication application) 
    { 
     application.BeginRequest += Application_BeginRequest; 
    } 

    private void Application_BeginRequest(object source, EventArgs e) 
    { 
     var application = (HttpApplication)source; 
     var currentContext = HttpContext.Current; 

     if (currentContext.Request.Url.ToString().ToLower().Contains("/~/media/")) 
     { 
      //Here we want to authenticate the user 
     } 
    } 

    public void Dispose() 
    { 
    } 
} 

Единственная информация, которую мы получаем из запроса путь к файлу. "/~/media/path/to/file.doc".

Есть ли другой способ получить дополнительную информацию из мультимедийного объекта? Есть ли лучший способ сделать одно и то же действие в Sitecore?

ответ

4

Вы можете использовать MediaManager.ParseMediaRequest метод для получения медиа-элемента:

MediaRequest request = MediaManager.ParseMediaRequest(HttpContext.Current.Request); 

if (request == null) 
{ 
    return false; 
} 

Media media = MediaManager.GetMedia(request.MediaUri); 

Существует хороший блог объяснить, как вы можете ограничить элементы средств массовой информации в Sitecore здесь Restricting access to Sitecore Media Items

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