ImageResizer Pipeline_AuthorizeImage для всех запросов изображений (даже без команд изменения размера)

Для изображений в определенных папках требуется дополнительная авторизация. У меня это работает для запросов изображений, сделанных с помощью команд изменения размера (т.е. /images/image.jpg?width=500), но запросы к самому основному изображению не вызывают авторизацию (то есть запрос к /images/image.jpg).

Есть ли опция конфигурации, позволяющая ImageResizer запускать событие Pipeline_AuthorizeImage для всех запросов изображений?

Мой Конфигуратор Resizer

  <resizer>
    <plugins>
      <add name="DiskCache"/>
      <add name="AutoRotate"/>
      <add name="SimpleFilters"/>
    </plugins>
  </resizer>

Отредактируйте, основываясь на принятом ответе ниже, вот как я это сделал:

Глобальный ASAX

void Application_Start(object sender, EventArgs e)
{
    Config.Current.Pipeline.Rewrite += Pipeline_Rewrite;
}

void Pipeline_Rewrite(IHttpModule sender, HttpContext context, IUrlEventArgs e)
{
    if(isProtectedFolder(context))
    {
       //default to safe option
       context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
       var allowAccess = false;

       //check stuff......

       if (!allowAccess)
       {
          context.Response.StatusCode = 401;
          context.Response.End();
          return;
       }
    }

}

1 ответ

Решение

Использование Config.Pipeline.PostAuthorizeRequestStart если вы хотите перехватить все HTTP-запросы, или Config.Pipeline.Rewrite если вы хотите перехватить все запросы изображений.

Другие вопросы по тегам