我有一个在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" />