asp.net授权/身份验证处理非asp.net文件的方式有变化吗?

时间:2011-03-07 10:03:13

标签: asp.net iis authentication authorization isapi

每当我使用asp.net身份验证/授权时,我都记得它从未用于保护.htm .js .css文件(实际上,任何未由asp.net isapi处理的文件) DLL)。

经过一段时间的其他工作后,我现在回到做一些网站开发,这次使用VS2010,现在情况正好相反。看起来好像所有文件都是安全的,因为登录页面上的图像和.js文件不起作用。

我的问题是,我最初的假设是关于非asp.net文件如何处理错误?如果没有,这种变化何时发生? VS2010开发服务器是否有变化,现在意味着所有文件都由asp.net处理?

非常感谢。

编辑添加:

我刚刚注意到,当我从本地IIS服务器运行我的项目时,非asp.net文件(例如图像和.js)不受保护。但是,从VS Development服务器运行它们时。显然,这归结为IIS和开发服务器之间的配置差异。这引出了另一个问题。是否可以配置VS dev服务器?

2 个答案:

答案 0 :(得分:1)

我已经发现了一些与此问题有关的信息。

集成管道模式下的IIS 7确实会通过与asp.net内容相同的管道处理所有文件的请求,这意味着授权非asp.net文件的行为将发生变化。

但是,为了保持向后兼容性,已经设置了授权,前提条件是忽略任何非asp.net内容。这会创建行为未发生变化的外观。

如果您想更改此行为并保护非asp.net内容,可以通过将以下内容添加到web.config来覆盖此前提条件。

<system.webServer>
  <modules>
    <remove name="FormsAuthenticationModule" />
    <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>

这有效地删除了HttpModules及其前置条件,并在没有它的情况下重新添加它们。

Cassini设置为使用集成管道模式,它没有向后兼容性前提条件。这意味着如果您使用带有表单身份验证的VS2010 dev服务器,您就没有选择权,非asp.net内容将始终受到保护。

答案 1 :(得分:0)

不,不是。它是如何通过IIS 6(较旧的)和IIS7 +中的defualt工作的经典管道,但它可以通过aspnet isapi路由所有内容来改变。

如果在IIS7 +或VS Developement Web服务器(Cassini)中使用集成管道,则所有请求都通过asp.net身份验证进行路由。