仍然在Windows XP(!)服务器上使用非常古老(略微定制)的BlogEngine.NET版本,所以我有点害怕升级。
过去,我编写了几个扩展名,以便根据用户/角色和/或帖子类别授予或阻止访问静态页面和/或帖子。例如,我可以阻止未经身份验证的用户访问博客,我可以向具有“读者”的用户授予对博客子集(帖子类别)的访问权限。角色等。
我注意到仍然可以访问图像,这些图像可以显式存储在/ App_Data / files /文件夹下,并由image.axd处理程序提供,或者与博客帖子相关联。
是否有可用的扩展点,我可以根据身份验证和/或用户/角色等标准添加一些逻辑来阻止访问图像?也许是基于他们的文件扩展名,或者诸如此类的东西?
答案 0 :(得分:1)
我不知道官方扩展点,但我认为您需要进行的编辑如下。
根据web.config中的这一行
<add verb="*" path="image.axd" type="BlogEngine.Core.Web.HttpHandlers.ImageHandler, BlogEngine.Core" validate="false"/>
image.axd
由BlogEngine.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
}
}