iis-7.5 – IIS 7.5:如何使用Windows身份验证配置自定义身份验证错误页面. 401标题问题

我有一个在IIS 7.5下运行的PHP网站.该站点Windows身份验证保护,工作正常:

用户访问该站点时,系统会要求他们输入用户名/密码,并在通过身份验证后通过.如果用户单击“取消”或错误输入密码3次,则会显示401错误页面

现在我想显示解释如何登录自定义页面.所以我转到错误页面,选择状态代码401.2并将其指向我想要显示页面

然后确保为每个人启用自定义错误.和kaa-boom!身份验证不再起作用,用户不会看到密码提示.正如文档所述,Windows身份验证的工作原理是首先发送401回复,然后浏览器会询问用户提供者凭据,然后他们会确定下一步该做什么.

这里发生了什么:首次请求页面IIS尝试发送401标头,但注意到web.config说“在401重定向到此页面”.而不是身份验证,它只是提供重定向页面.

我试过替换401,401.1,401.2 – 没有任何区别.

我做错了什么以及如何在用户身份验证错误上提供自定义页面

附:这是web.config

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <httpErrors errorMode="Custom">
            <remove statusCode="500" subStatusCode="-1" />
            <remove statusCode="404" subStatusCode="-1" />
            <remove statusCode="401" subStatusCode="-1" />
            <error statusCode="401" subStatusCode="2" prefixLanguageFilePath="" path="/not_restricted/401.htm" responseMode="ExecuteURL" />
            <error statusCode="404" prefixLanguageFilePath="" path="/not_restricted/404.htm" responseMode="ExecuteURL" />
        </httpErrors>
        <httpProtocol>
            <customHeaders>
                <remove name="X-Powered-By" />
            </customHeaders>
        </httpProtocol>
    </system.webServer>
    <system.web>
        <identity impersonate="false" />
        <customErrors defaultRedirect="http://www.myserver.com/not_restricted/500.htm" mode="Off">
        </customErrors>
    </system.web>
</configuration>
试试这个:

更改:

<error statusCode="401" subStatusCode="2" prefixLanguageFilePath="" path="/not_restricted/401.htm" responseMode="ExecuteURL" />

<error statusCode="401" subStatusCode="2" prefixLanguageFilePath="" path="not_restricted\401.htm" responseMode="File" />

使用响应模式“文件”IIS只加载该文件内容显示它,它仍然将401状态发送回客户端.

我以前使用’ExecuteURL’,但已经知道文件模式工作得更好.您只需确保错误页面中的任何链接资源仍然有效.

相关文章

Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...
Windows文件操作基础代码 Windows下对文件进行操作使用的一段...
Winpcap基础代码 使用Winpcap进行网络数据的截获和发送都需要...
使用vbs脚本进行批量编码转换 最近需要使用SourceInsight查看...