IIS7 表单身份验证不会拒绝图像访问

Posted

技术标签:

【中文标题】IIS7 表单身份验证不会拒绝图像访问【英文标题】:IIS7 Forms Authentication Doesn't Deny Image Access 【发布时间】:2011-06-22 22:23:57 【问题描述】:

我在 IIS7 中设置了一个基本的 ASP.NET 网站,并在服务器上启用了表单身份验证。只是为了笑,我否认所有人:

<?xml version="1.0"?>
<configuration>
  <system.web>

    <authentication mode="Forms">
        <forms name=".ASPXAUTH" loginUrl="Login.aspx" defaultUrl="Test.aspx" protection="All" timeout="30" path="/" requireSSL="false" slidingExpiration="true"/>
    </authentication>

    <authorization>
        <deny users="*"/>
    </authorization>

    <compilation debug="true"/>
  </system.web>
</configuration>

当我访问 default.aspx 页面时,我会尽职尽责地重定向到 Login.aspx 页面。但是,我可以浏览到同一站点根目录下的 .txt 文件或 .png 文件,并且它会毫无问题地显示它。

这很奇怪,因为在 Cassini 开发服务器中,对这些文件的访问被阻止了。这仅在我发布到我的 IIS7 服务器后才会发生。

我一定是在 IIS7 中遗漏了一些东西,但我一辈子都想不通。

我的网站在它自己的 .NET 4.0 应用程序池中,启用了集成模式。 在服务器上启用了表单身份验证 在 FormsAuthentication 模块的“编辑托管模块”弹出窗口中,我尝试取消选中“仅为请求调用...”,但是这样做时会抛出某种奇怪的错误(缺少某种程序集?这是一个全新的服务器安装没有多余的装饰,所以我无法想象那是什么)。

谁能指出我正确的方向?

谢谢! 机器人化

【问题讨论】:

【参考方案1】:

首先您必须使用集成管道,然后将其添加到您的 web.config 中:

<system.webServer>
  <modules runAllManagedModulesForAllRequests="false">
    <remove name="FormsAuthenticationModule" />
    <add name="FormsAuthenticationModule" type="System.Web.Security.FormsAuthenticationModule" />

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

【讨论】:

以上是关于IIS7 表单身份验证不会拒绝图像访问的主要内容,如果未能解决你的问题,请参考以下文章

在启用 Windows 身份验证的情况下拒绝访问本地资源

IIS6 和 IIS7 表单身份验证兼容性

两阶段身份验证 IIS7

Ldap 用户授权失败 - 未处理的 Spring 身份验证“访问被拒绝”

使用 IIS 7.5 进行表单身份验证 - 未授权

iis7 基于挑战和基于登录重定向的身份验证不能同时使用