ImageResizer Pipeline_AuthorizeImage 用于所有图像请求(即使是没有调整大小命令的请求)
ImageResizer Pipeline_AuthorizeImage for all image requests (even ones without resize commands)
某些文件夹中的图像需要对其执行额外的授权。我让它处理使用调整大小命令发出的图像请求(即 /images/image.jpg?width=500),但对主图像本身的请求不会触发授权(即对 /images/image.jpg 的请求) .
是否有配置选项可让 ImageResizer 在 所有 个图像请求上触发 Pipeline_AuthorizeImage 事件?
我的调整器配置
<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;
}
}
}
如果要拦截所有 HTTP 请求,请使用Config.Pipeline.PostAuthorizeRequestStart
,如果要拦截所有image[=,请使用Config.Pipeline.Rewrite
16=] 请求。
某些文件夹中的图像需要对其执行额外的授权。我让它处理使用调整大小命令发出的图像请求(即 /images/image.jpg?width=500),但对主图像本身的请求不会触发授权(即对 /images/image.jpg 的请求) .
是否有配置选项可让 ImageResizer 在 所有 个图像请求上触发 Pipeline_AuthorizeImage 事件?
我的调整器配置
<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;
}
}
}
如果要拦截所有 HTTP 请求,请使用Config.Pipeline.PostAuthorizeRequestStart
,如果要拦截所有image[=,请使用Config.Pipeline.Rewrite
16=] 请求。