有没有办法扩展BlogEngine以防止未经身份验证的用户访问图像?

时间:2014-08-13 19:36:06

标签: blogengine.net

仍然在Windows XP(!)服务器上使用非常古老(略微定制)的BlogEngine.NET版本,所以我有点害怕升级。

过去,我编写了几个扩展名,以便根据用户/角色和/或帖子类别授予或阻止访问静态页面和/或帖子。例如,我可以阻止未经身份验证的用户访问博客,我可以向具有“读者”的用户授予对博客子集(帖子类别)的访问权限。角色等。

我注意到仍然可以访问图像,这些图像可以显式存储在/ App_Data / files /文件夹下,并由image.axd处理程序提供,或者与博客帖子相关联。

是否有可用的扩展点,我可以根据身份验证和/或用户/角色等标准添加一些逻辑来阻止访问图像?也许是基于他们的文件扩展名,或者诸如此类的东西?

1 个答案:

答案 0 :(得分:1)

我不知道官方扩展点,但我认为您需要进行的编辑如下。

根据web.config中的这一行

<add verb="*" path="image.axd" type="BlogEngine.Core.Web.HttpHandlers.ImageHandler, BlogEngine.Core" validate="false"/>

image.axdBlogEngine.Core.Web.HttpHandlers.ImageHandler

处理

如果您查看BlogEngine.Core项目,您将找到定义此类的ImageHandler.cs。假设您需要访问Session,您需要IReadOnlySessionState作为该类的实现接口。

public class ImageHandler : IHttpHandler, IReadOnlySessionState {
    ...
}

一旦到位,您可以使用ProcessRequest方法访问会话以执行自定义检查。

public void ProcessRequest(HttpContext context) {
    if(context.Session["SomeKey"] == true){
        //serve image code goes here
    }
}