表单身份验证任何类型的文件以及.aspx文件

时间:2012-08-01 14:40:03

标签: asp.net forms-authentication iis-7.5

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

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

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

我试过以下:

**通过模块中的changin设置更改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="" />

在这些更改之后,用户仍然可以在不进行任何身份验证的情况下查看非托管资源。

这里有什么我想念的吗?还有其他方法可以达到这个目的吗?

1 个答案:

答案 0 :(得分:0)

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

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