我有一个网站在IIS 7.5服务器上运行,在共享主机上安装了ASP.NET4.0,但完全受信任.

该网站是一个基本的"文件浏览器",允许访问者登录并显示可用文件列表,显然,还可以下载文件.静态文件(主要是pdf文件)位于网站上名为data的子文件夹中,例如http://example.com/data/...

该网站使用ASP.NET表单身份验证.

我的问题是:如何获得ASP.NET引擎来处理对数据文件夹中静态文件的请求,以便对文件的请求由ASP进行身份验证.NET,而用户无法深入链接到文件并获取他们不允许拥有的文件?

推荐答案

如果您的应用程序池在集成模式下运行,则可以执行以下操作.

将以下内容添加到您的顶级web.config中.

  <system.webServer>
    <modules>
      <add  name="FormsAuthenticationModule"  type="System.Web.Security.FormsAuthenticationModule" />
      <remove  name="UrlAuthorization" />
      <add  name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule"  />
      <remove  name="DefaultAuthentication" />
      <add  name="DefaultAuthentication"  type="System.Web.Security.DefaultAuthenticationModule" />
    </modules>
  </system.webServer>

现在你可以使用标准的ASP.NET权限.配置以强制对目录中的所有文件进行窗体身份验证.

<system.web>
    <authorization>
        <deny users="?" />
    </authorization>
    <authentication mode="Forms" />
</system.web>

Asp.net相关问答推荐

单个方法(即扩展方法)之间的调用不明确

ASP .Net Web API 将图像下载为二进制

log4net 记录所有未处理的应用程序错误

如何使多行的 TextBox 控件无法调整大小?

创建一个供 ASP.NET 应用程序中的所有线程使用的静态 Regex 对象是否有效?

某些黑客能否从用户那里窃取 Web 浏览器 cookie 并在网站上使用该名称登录?

在 DataTextField 中组合两个字段.这可能吗?

返回 JSON 对象 (ASP.NET WebAPI)

如何在没有实体框架的情况下使用 ASP.NET Identity 3.0

如何配置 ASP.NET Core 1.0 以使用本地 IIS 而不是 IIS Express?

与将 Web 应用程序保存在一个默认应用程序池中相比,拥有专用应用程序池的优缺点

错误:无法在 Web 服务器上开始调试... ASP.NET 4.0

以编程方式从后面的代码中关闭 aspx 页面

.NET 上的 HTTP/2(HTTP2 或 SPDY)

Page.IsValid 是如何工作的?

您使用哪个 .NET Memcached 客户端,EnyimMemcached 与 BeITMemcached?

如何获取当前登录用户的角色列表

要调用此方法,Membership.Provider属性必须是ExtendedMembershipProvider的实例

路由模板分隔符/不能连续出现 - 属性路由问题

ASP.NET 按钮重定向到另一个页面