0

我有一个为表单身份验证 + 匿名访问设置的网站。

当用户请求任何页面(托管资源,例如 .aspx 页面)时,他会被重定向到 Logon.aspx

如果资源不受管理,例如 .html 、 .png 、 .jpg 等文件,则会出现问题。当用户尝试使用 URL 直接访问这些资源时,他无需任何身份验证即可查看这些资源。他没有被重定向到 LogOn.aspx 页面。

我试过以下:

**通过更改模块中的设置来更改 IIS 7.5 中的设置来编辑 DefaultAuthentication 和 FormsAuthentication 的托管模块。

当我取消选中“仅为对 ASP.NET 应用程序或托管处理程序的请求调用”复选框并保存时,我收到如下所示的警告消息。

“在此应用程序的引用程序集中找不到指定的类型。请确保该程序集已添加到此应用程序的 web.config 的 system.web/compilation 部分中的程序集列表中。您还想继续吗? "

我在博客上读到我们可以忽略此警告消息,然后单击警告消息中的“是”选项以保存设置。

保存更改后,这会在 Web.config 中添加以下行:

<remove name="DefaultAuthentication" />
        <remove name="FormsAuthentication" />
<add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" preCondition="" />
  <add name="DefaultAuthentication" type="System.Web.Security.DefaultAuthenticationModule" preCondition="" />

在这些更改之后,用户仍然能够在没有任何身份验证的情况下查看非托管资源。

我在这里有什么遗漏吗?有没有其他方法可以实现这一目标?

4

1 回答 1

0

您可以强制 Web 服务器运行静态文件的所有托管模块(包括表单模块),方法是在 web.config 的 system.webServer 部分的 modules 部分中将 runAllManagedModulesForAllRequests 设置为 true。

缺点是为静态数据运行模块会减慢您的服务器速度,但您肯定会获得预期的效果。

于 2012-08-01T16:03:43.967 回答