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
если вы хотите перехватить все запросы изображений.