Asp.net 为任何类型的文件以及.aspx文件形成身份验证

Asp.net 为任何类型的文件以及.aspx文件形成身份验证,asp.net,forms-authentication,iis-7.5,Asp.net,Forms Authentication,Iis 7.5,我有一个网站设置为表单身份验证+匿名访问 当用户请求任何页面(托管资源,如.aspx页面)时,他将被重定向到Logon.aspx 如果资源是非托管的,例如.html、.png、.jpg等文件,则会出现问题。 当用户试图使用URL直接访问这些资源时,他能够在不进行任何身份验证的情况下查看这些资源。 他没有被重定向到LogOn.aspx页面 我尝试了以下几点: **通过更改IIS 7.5中的设置并更改模块中的设置,编辑默认身份验证和FormsAuthentication的托管模块 当我取消选中“仅对

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

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

如果资源是非托管的,例如.html、.png、.jpg等文件,则会出现问题。 当用户试图使用URL直接访问这些资源时,他能够在不进行任何身份验证的情况下查看这些资源。 他没有被重定向到LogOn.aspx页面

我尝试了以下几点:

**通过更改IIS 7.5中的设置并更改模块中的设置,编辑默认身份验证和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="" />

在这些更改之后,用户仍然能够查看非托管资源,而无需任何身份验证


这里有我遗漏的东西吗?是否有其他方法可以实现这一点?

如果web.config设置为true,则可以通过在system.webServer部分的模块部分中将runAllManagedModulesForAllRequests设置为true,强制web服务器为静态文件运行所有托管模块(包括表单模块)


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

谢谢您的回答。我也尝试过这个,但是这个改变对网站的行为没有影响。