我有一个面向互联网的 ASP.NET 网站,我想通过 Windows 身份验证来保护该网站的安全。我将 web.config 文件设置为:
<system.web>
<authentication mode="Windows" />
<authorization>
<allow users="*"/>
<deny users="?"/>
</authorization>
然后,我在 IIS 7.5 中禁用了匿名访问并启用了 Windows 身份验证。
这会导致显示有关我的 Windows 凭据的提示框,但是单击“取消”会显示标准的 401 错误页面。我想显示一个静态 HTML 文件来代替此消息,但是我无法使其正常工作,并且我尝试了各种设置的组合,例如:
<httpErrors errorMode="Custom" existingResponse="Replace" lockAllAttributesExcept="errorMode"> <error statusCode="401" prefixLanguageFilePath="c:\inetpub\custerr" path="MyCustom401.htm" /> </httpErrors>
and
<customErrors mode="Off" defaultRedirect="ErrorPage.aspx">
<error statusCode="401" redirect="MyCustom401.aspx" />
</customErrors>
我希望发生的是,任何输入正确 Windows 凭据的人都可以正常访问该网站,但那些输入无效或详细信息的人可以查看自定义 HTML 页面。
有人能指出我正确的方向吗?
Thanks!
需要确保的一件事是您允许匿名用户访问包含错误文件的路径,否则他们将无法获得错误页面。例如,如果您的错误文件位于目录(错误)中,这里是一个配置文件,它应该为您提供预期的结果。首先,它禁用所有站点的匿名访问,但随后打开“errors”文件夹:
<configuration>
<system.webServer>
<security>
<authorization>
<add accessType="Deny" users="?" />
</authorization>
</security>
<httpErrors errorMode="Custom">
<error statusCode="401" subStatusCode="2" path="/errors/unauthorized.aspx" responseMode="ExecuteURL" />
</httpErrors>
</system.webServer>
<location path="errors">
<system.webServer>
<security>
<authorization>
<clear />
<add accessType="Allow" users="*" />
</authorization>
</security>
</system.webServer>
</location>
</configuration>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)