ASP.net中的静态文件和身份验证

时间:2009-03-09 13:48:43

标签: c# asp.net security ihttphandler ihttpmodule

假设我在IIS7中有一个虚拟文件夹/ topFolder /,并且在该文件夹中可以存在任何可以在浏览器中显示的文件(xml,html,swf,doc等 - 从IIS角度来看通常是“非托管”资源)。 在给予请求权限以打开文件夹下面的任何文件之前,我需要检查一些会话变量,以查看用户是否拥有相关子文件夹和文件的“许可证”。

我尝试使用IHttpModule和IReadOnlySessionState接口实现模块,但是当文件是“静态”而不是IIS管理(如aspx,ashx等)时,会话在AcquireRequestState事件上始终为null。

如果我使用自定义HttpHandler,我会得到会话,但是我还需要实现内容如何发送到响应。编辑:由于用户没有下载文件,我只希望IIS像使用StaticFileModule一样提供文件。处理程序/模块应该是一个StaticFileModuleWithAuthorizationHook ...

所以我真的想做以下事情: 1.对于request / topFolder / *:检查会话和许可证等   a)如果没问题,继续提供文件   b)如果不正常,请中断请求,或者只是发送FORBIDDEN作为响应。

希望有人可以提供帮助。

1 个答案:

答案 0 :(得分:1)

您应该可以通过httphandler处理此问题,简单的方法是使用内置方法将文件发送给用户(如果他们有权访问)。

This article(在底部)显示了如何执行此操作的示例。